一、问题描述
JWTUtils.java
文件
@Component
public class JWTUtils {
@Value("${jwt.header}")
public static String header;
@Value("${jwt.tokenPrefix}")
public static String tokenPrefix;
@Value("${jwt.secret}")
public static String secret;
@Value("${jwt.expire}")
public static long expire;
}
application.yml
文件
jwt:
header: "Authorization" #token 返回头部
tokenPrefix: "Bearer" #token 前缀
secret: "qwertyuiop7418520" #密钥
expire: 3600 #token有效时间
JwtTest.java
文件
@Autowired
JWTUtils jwtUtils;
@Test
public void tokenTest() {
System.out.println(jwtUtils.header);
}
测试类中得到的结果为null
二、问题原因
使用@Value
注解,那么存值的变量就不能用static
或final
修饰
三、问题解决
把要取值的变量前的static
或final
去掉就行。
JWTUtils.java
@Component
public class JWTUtils {
@Value("${jwt.header}")
public String header;
@Value("${jwt.tokenPrefix}")
public String tokenPrefix;
@Value("${jwt.secret}")
public String secret;
@Value("${jwt.expire}")
public long expire;
}
JwtTest.java
@SpringBootTest
public class JwtTest {
@Autowired
JWTUtils jwtUtils;
@Test
public void tokenTest() {
System.out.println(jwtUtils.header);
}
}
成功从yml
文件中取值。