最近在使用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