• Spring拦截器中@Value无效的解决办法


    最近在使用SpringBoot开发项目时,用到了SpringMVC拦截器的功能。鉴于SpringBoot指南中建议使用Java Config的配置方式,拦截器的配置也不例外,从原先的xml配置方式转为了Java Config。

    首先贴出拦截器的一种配置方式:

    1 @Configuration
    2 public class WebMvcConfig extends WebMvcConfigurerAdapter {
    3   @Override
    4     public void addInterceptors(InterceptorRegistry registry) {
    5         super.addInterceptors(registry);
    6 
    7         registry.addInterceptor(new LogInterceptor()).addPathPatterns("/**");
    8     }
    9 }

    上面的拦截器配置在网上搜索一下,也是随处可见的。拦截器可以正常运作,但是拦截器中@Value注解的属性值为null,没有读取到期望的properties文件中的值。

    再看拦截器的另一种配置方式:

     1 @Configuration
     2 public class WebMvcConfig extends WebMvcConfigurerAdapter {
     3   @Bean
     4   public LogInterceptor logInterceptor() {
     5     return new LogInterceptor();
     6   }
     7 
     8   @Override
     9     public void addInterceptors(InterceptorRegistry registry) {
    10         super.addInterceptors(registry);
    11 
    12         registry.addInterceptor(logInterceptor()).addPathPatterns("/**");
    13     }
    14 }

    如果按照上面的配置方式,@Value注解可以成功注入properties文件中的属性值。

    思考:第一种方式中,拦截器是手动new出来的,拦截器中的依赖注入并未得到处理;第二种方式,同样是new出来的拦截器,但通过@Bean的声明,表明拦截器是Spring管理的bean,依赖注入工作自然Spring会做处理。

    本篇博客的内容源自:https://my.oschina.net/angerbaby/blog/687582?p=1 博客
  • 相关阅读:
    2019春总结作业
    2019春第十二周作业
    2019春第十一周作业
    第九周作业
    2019春第八周作业
    第七周作业
    第六周作业
    第五周作业 英文单词排序
    2019年春季学期第四周作业
    2019春第三周作业
  • 原文地址:https://www.cnblogs.com/maigy/p/11055418.html
Copyright © 2020-2023  润新知