拦截器

2020/1/1

点击勘误issues (opens new window),哪吒感谢大家的阅读

# 拦截器

public interface HandlerInterceptor {
    // 在请求处理之前进行调用(Controller方法调用之前)
    default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        return true;
    }

    // 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
    default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
    }

    // 在整个请求结束之后被调用,也就是在DispatcherServlet渲染了对应的视图之后执行(主要是用于进行资源清理工作)
    default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
    }
}

@RefreshScope//开启配置文件的热加载
@Configuration//配置类
public class WebAppConfigure extends WebMvcConfigurationSupport {
    @Value("${gateway.url.firewall}")
    String firewallList;

    private final String path = "/";

    // 使用@Lazy注解,表示延迟加载,即在使用该bean时才进行初始化
    @Lazy
    // 使用@Autowired注解,表示自动注入该bean
    @Autowired
    // 声明一个SentinelWebInterceptor类型的成员变量
    private SentinelWebInterceptor sentinelWebInterceptor;

    @Bean   //把我们的拦截器注入为bean
    public HandlerInterceptor getWebInterceptor() {
        return new WebInterceptor();
    }
}