一、问题描述

自定义一个Filter如下:

@Component
public class JwtFilter extends GenericFilterBean{@Value("${jwt.header}")private String header;  //此处无法注入 值为 null

在config中将此filter注册给spring

@Configuration
@AutoConfigureAfter(JwtFilter.class)
public class JwtConfig {@Beanpublic FilterRegistrationBean jwtFilter() {final FilterRegistrationBean registrationBean = new FilterRegistrationBean();registrationBean.setFilter(new JwtFilter());  //率先执行String[] paths = jwtProperty.getCheckPath().split(",");for (String p : paths){registrationBean.addUrlPatterns(p);System.out.println(p);}return registrationBean;}
}

原因:执行顺序问题,config率先执行,new JwtFilter()会构造一个filter对象交给spring,而此时 @Value还未读取配置,所以在JwtFilter中的 @Value值为 null。

解决方法: 使用一个类来读取配置

@Component
@Data
public class JwtProperty {@Value("${jwt.header}")private String header;@Value("${jwt.tokenHead}")private String tokenHead;@Value("${jwt.secret}")private String secret;@Value("${jwt.checkPath}")private String checkPath;@Value("${jwt.expiration}")private Integer expire;public JwtProperty() {}
}

然后将其注入到config中

@Configuration
public class JwtConfig {@Autowiredprivate JwtProperty jwtProperty;

在 构造JwtFilter时,作为参数传入构造函数

new JwtFilter(jwtProperty)

则,在 JwtFilter对象中就可以使用相关的配置信息了

@Value()读取配置文件属性,读出值为null的问题相关推荐

  1. Spring Boot 如何正确读取配置文件属性

    前言 项目中经常会经常读取配置文件中的属性的值,Spring Boot提供了很多注解读取配置文件属性,那么如何正确使用呢? @Value @Value用来读取application.yml配置文件中属 ...

  2. php+读取配置里的值,ThinkPHP 读取配置信息与动态配置(C方法)

    ThinkPHP C 方法 C 方法是 ThinkPHP 内置的特殊方法,用于在操作和模板里读取配置文件里的配置信息或者动态配置参数.语法如下: C( para_name, value ) 参数说明 ...

  3. springboot读取json文件_SpringBoot:配置文件属性读取

    SpringBoot中默认加载的是application.properties或者application.yaml文件,当然也支持自定义的属性文件.我们可以在此文件中写一些自己想要的配置信息,然后在用 ...

  4. 创建前缀一样的文件_SpringBoot:配置文件属性读取

    SpringBoot中默认加载的是application.properties或者application.yaml文件,当然也支持自定义的属性文件.我们可以在此文件中写一些自己想要的配置信息,然后在用 ...

  5. linux 重读环境变量,关于linux中使用source /etc/profile重新读取配置后,新的环境变量只能在当前终端里面有效,新开的终端提示 command not found...

    文章目录 问题 知识点 问题分析及解决 补充 问题 在使用linux桌面环境(通常是ubuntu/debian/deepin等版本的linux)的时候,新增环境变量后,会使用source /etc/p ...

  6. lis3dh调试心得,读取正确的加速度值

    最近在调试lis3dh加速度计,网上一搜能找到很多资料,但是描述正确的,感觉不是很多,所以这里我来总结一下,也是在网友博客的基础上将正确的地方集中整理一下. 1.   首先说驱动,驱动网上流传的基本上 ...

  7. springboot配置文件属性大全

    springboot配置文件属性大全 1. application.yml参数 1. application.yml参数 #-------------------------------------- ...

  8. VS Code 配置调试参数、launch.json 配置文件属性、task.json 变量替换、自动保存并格式化、空格和制表符、函数调用关系、文件搜索和全局搜索、

    1. 生成配置参数 对于大多数的调试都需要在当前项目目录下创建一个 lanch.json 文件,位置是在当前项目目录下生成一个 .vscode 的隐藏文件夹,在里面放置一些配置内容,比如:settin ...

  9. @value 数组_SpringBoot @Value 读取配置,太强大了!

    Java技术栈 www.javastack.cn 关注优质文章 本文作者:Jitwxs 链接:www.jitwxs.cn/d6d760c4.html 一.前言 在日常开发中,经常会遇到需要在配置文件中 ...

最新文章

  1. “我被机器解雇了!”Amazon 63岁员工因算法评分太低被自动开除
  2. Delphi中的消息截获
  3. java joptionpanel_JOptionPane用法--java
  4. C#~异步编程续~.net4.5主推的awaitasync应用
  5. java绑定click时间_JAVA面试之vue.js(一)
  6. 视频课程-1小时上手 Spring Boot 及 达梦数据库 做数据展示后端
  7. 贪心算法之活动选择问题
  8. 惊喜不止小米9!小米又一4800万新机确认:不给友商机会?
  9. php 防止不登录进入后台,php后台如何避免用户直接进入方法实例
  10. linux nfs挂载域名,Linux系统挂载NFS的方法
  11. 指针数组 | 数组指针
  12. 在OpenSSL中添加自定义加密算法
  13. win7查看计算机设置密码,如何查看win7电脑开机密码_win7专业版电脑开机密码怎么查看...
  14. c语言计算定积分有几种方法,C语言用6种方法求定积分.doc
  15. jsGannt Improved 中文教程文档
  16. 李沐动手学深度学习V2-注意力评分函数
  17. vue-element-admin整合spring-boot实现权限控制之用户管理篇
  18. CodeBlocks安装汉化与使用说明
  19. Hadoop的介绍以及发展历史
  20. html怎么做小米logo,CSS3:一个标签画LOGO——小米

热门文章

  1. 自制滚动的天空,原来很简单,就差细节来人给做做
  2. 算法日志:python把终端的信息存为log和logging
  3. android 抠图功能,Android抠图工具,天天P图
  4. python 制作 二维码
  5. 人类简史 - ZhiMap思维导图 (转载)
  6. 跨专业考研学生的三个问题
  7. Ubuntu KVM安装过程
  8. Serial Programming Guide for POSIX Operating Systems
  9. Qt编写安防视频监控系统33-onvif云台控制
  10. 零基础入门学习Python--永久存储:腌制一缸美味的泡菜