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

相关文章
相关标签/搜索