最近在使用SpringBoot开发项目时,用到了SpringMVC拦截器的功能。鉴于SpringBoot指南中建议使用Java Config的配置方式,拦截器的配置也不例外,从原先的xml配置方式转为了Java Config。ide
首先贴出拦截器的一种配置方式:code
@Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void addInterceptors(InterceptorRegistry registry) { super.addInterceptors(registry); registry.addInterceptor(new LogInterceptor()).addPathPatterns("/**"); } }
上面的拦截器配置在网上搜索一下,也是随处可见的。拦截器能够正常运做,可是拦截器中@Value注解的属性值为null,没有读取到指望的properties文件中的值。xml
再看拦截器的另外一种配置方式:开发
@Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { @Bean public LogInterceptor logInterceptor() { return new LogInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry) { super.addInterceptors(registry); registry.addInterceptor(logInterceptor()).addPathPatterns("/**"); } }
若是按照上面的配置方式,@Value注解能够成功注入properties文件中的属性值。io
思考:第一种方式中,拦截器是手动new出来的,拦截器中的依赖注入并未获得处理;第二种方式,一样是new出来的拦截器,但经过@Bean的声明,代表拦截器是Spring管理的bean,依赖注入工做天然Spring会作处理。class