由于util类中需要使用application.properties中数据
@Value("${acpsdk.sign}")
private String sign;
private static String signStatic;
@PostConstruct
public void setSignStatic() {
signStatic= this.sign;
}
public static String getSignStatic() {
return signStatic;
}
使用 @PostConstruct注解解决注入问题,
例如:原始:acpsdk.sign=09
修改:acpsdk.sign=01
在修改配置文件调用POST请求手动刷新配置文件时http://ip:port/actuator/refresh,发现第一次调用getSignStatic()方法返回09,
打断点发现,先调用getSignStatic(),随后才调用的setSignStatic()将值改变。
解决:
@EventListener
public void onRefreshScopeRefreshed(final RefreshScopeRefreshedEvent event) {
getClass();
}
在bean上添加上面方法,调用会触发它的初始化(@PostConstruct方法).
转自:https://stackoverflow.com/questions/44431760/spring-boot-with-refreshscope-postconstruct-predestroy
中文翻译:https://codeday.me/bug/20190322/804608.html