拦截器是开发经常用的,Spring Boot提供的Sping MVC不符合要求,则可以通过一个配置类(注解有@Configuration的类)加上@EnableWebMvc注解来实现完全自己控制的MVC配置。
当然,通常情况下,Spring Boot的自动配置是符合我们大多数需求的。在你既需要保留Spring Boot提供的便利,有需要增加自己的额外的配置的时候,可以定义一个配置类并继承WebMvcConfigurerAdapter,无需使用@EnableWebMvc注解。
这里我们提到这个WebMvcConfigurerAdapter这个类,重写这个类中的方法可以让我们增加额外的配置,这里我们就介绍几个常用的。
拦截器addInterceptors
拦截器在我们项目中经常使用的,这里就来介绍下最简单的判断是否登录的使用。
要实现拦截器功能需要完成以下2个步骤:
创建我们自己的拦截器类并实现 HandlerInterceptor 接口
其实重写WebMvcConfigurerAdapter中的addInterceptors方法把自定义的拦截器类添加进来即可
首先,自定义拦截器代码:
三、过滤器和拦截器区别
主要区别如下:
1、 拦截器主要是基于java的反射机制的,而过滤器是基于函数回调
2、 拦截器不依赖于servlet容器,过滤器依赖于servlet容器
3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用
4,拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问
6、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次
两种方式均可以使用,相比较而言,第一种方式较为方便,我一开始也是使用的这种,但是后来需要集成Spring Boot Validator框架时,发现验证数据一直不生效,后来发现是和Inteceptor有冲突,去掉拦截就可以验证了