问题出在一次在工具类中使用静态变量请求外部接口时一直访问失败,经过排查发现,秘钥的值为null ,而秘钥是静态的只是从yml 文件中获取的。没有获取到,但其中另一个方法从yml 文件中获取的值却获取到了@value() 方法在不是静态变量的时候起效,在静态变量是不起效了。

原因及解决方法:springBoot 加载时静态变量会先加载,导致没有赋值。

解决方法:定义另外一个非静态的变量,并赋值,编写构造器,或 set 方法,使用@PostConstruct 注解赋值

private static String APP_KEY;

private static String SECRET_KEY;
@Value("${appkey}")
private String aa;

@Value("${secretkey}")
private String bb;

@PostConstruct
public void setAppKey() {
   HttpUtil.APP_KEY = this.aa;
   HttpUtil.SECRET_KEY = this.bb;
}