spring boot @RefreshScope @PostConstruct refresh 配置文件刷新不及时

 

由于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

 

 

你可能感兴趣的:(spring boot @RefreshScope @PostConstruct refresh 配置文件刷新不及时)