Spring攔截器中@Value無效的解決辦法

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

相關文章
相關標籤/搜索