一、问题描述

自定义一个Filter如下:

@Component
public class JwtFilter extends GenericFilterBean{ @Value("${jwt.header}")
private String header; //此处无法注入 值为 null
在config中将此filter注册给spring @Configuration
@AutoConfigureAfter(JwtFilter.class)
public class JwtConfig {
@Bean
public 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 { @Autowired
private JwtProperty jwtProperty;

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

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

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

  1. java读取配置文件属性

    在项目开发过程中,有时需要将其中用到的变量值在一个文件中统一管理,首先我选到了config.properties文件:下面这个代码是用于读取其中的变量值的类: package com.modem.te ...

  2. springboot @Configuration配置类里面使用@Value获取不到.yml配置文件属性的值

    之前一个项目里面分为很多子工程的那种结构,要求让我改成一个项目的结构.我这边手动将代码合并之后出现下面的这种问题,然后尝试进行用各种方式解决 Error creating bean with name ...

  3. SpringBoot基础学习(二) SpringBoot全局配置文件及配置文件属性值注入

    全局配置文件 全局配置文件能够对一些默认配置值进行修改.SpringBoot 使用一个名为 application.properties 或者 application.yaml的文件作为全局配置文件, ...

  4. Spring 中 Xml配置文件属性的说明

    Xml配置文件属性的说明: <bean id="TheAction" ⑴ class="net.xiaxin.spring.qs.UpperAction" ...

  5. NameValueCollection类读取配置信息

    C#中的NameValueCollection类读取配置信息,大家可以参考下.   我首先介绍配置文件中的写法: 1.在VS2015中的工程下建立一个控制台应用程序,其config文件默认名称为App ...

  6. Spark读取配置(转)

    转自:https://github.com/keepsimplefocus/spark-sourcecodes-analysis/blob/master/markdowns/Spark%E8%AF%B ...

  7. Xml配置文件属性的说明

    Xml配置文件属性的说明: <bean id="TheAction" ⑴ class="net.xiaxin.spring.qs.UpperAction" ...

  8. 读取配置和动态配置(C方法)

    读取配置 无论何种配置文件,定义了配置文件之后,都统一使用系统提供的C方法(可以借助Config单词来帮助记忆)来读取已有的配置.用法:C('参数名称') 例如,读取当前的URL模式配置参数:$mod ...

  9. RootKit随手记(一)RootKit的驱动隐藏、读取配置、卸载安装

    边学习边更新这专题,随手记录一下用到的思路,给自己看的(所以读者看可能有些懵,不好意思...) RootKit随手记(一)RootKit的驱动隐藏.读取配置.卸载安装 一.驱动隐藏 1. 隐藏原理 一 ...

随机推荐

  1. 关于js里的布尔值判断

    第一种if(a)a为以下值时转换为false   false undefined null 0 -0 NaN ""

  2. webpack中环境变量的使用方法

    这节课讲解一下,在webpack打包过程中,怎么去使用一些环境变量. 首先我有一个打包配置的三个文件 "scripts": { "dev-build": &qu ...

  3. 机器学习中的数学-强大的矩阵奇异值分解(SVD)及其应用

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  4. 如何查看JVM的内存

    学过java的人都知道,jvm是解释运行java的,java能够作为跨平台语言,也是因为jvm的存在,合理的使用jvm内存可以帮助程序很好的运行.那么,怎么查看jvm的内存使用情况呢,下面本文介绍一下 ...

  5. SpringMVC利用AOP实现自定义注解记录日志

    作者:飞翔的拖鞋up 推荐:彻底征服 Spring AOP 之 实战篇 推荐:jason_zhangz 本文抛砖引玉,并没有详细的介绍更全面的内容,通过一个例子让初次使用的人能够快速入门,简单的介绍一 ...

  6. Mybatis各种查询

    实体Emp private int empno; private String ename; private String job; private Integer mgr; private Date ...

  7. Java8-Executors-No.03

    import java.util.Arrays; import java.util.List; import java.util.concurrent.Callable; import java.ut ...

  8. Java8-Lambda-No.02

    public class Lambda2 { @FunctionalInterface public static interface Converter<F, T> { T conver ...

  9. jmeter+ant+jenkins搭建自动化测试环境(基于linux)

    安装CentOS7操作系统 关闭系统防火墙 [root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# syste ...

  10. Codeforces Round #585 (Div. 2) A. Yellow Cards(数学)

    链接: https://codeforces.com/contest/1215/problem/A 题意: The final match of the Berland Football Cup ha ...