Apollo 无法自动刷新@ConfigurationProperties注解类,需要自己编写监听器去刷新内容,代码如下:
@Slf4j
@Component
public class SpringBootApolloRefreshConfig {
@Autowired
private RefreshScope refreshScope;
@Autowired
private ApplicationConfig applicationConfig;
@ApolloConfigChangeListener(value = {"application"}, interestedKeyPrefixes = {"application"})
public void onSentinelChange(ConfigChangeEvent event) {
refreshScope.refresh("applicationConfig");
// 调用toString的原因是因为被 @RefreshScope 刷新的bean,在重新生成时是懒加载的。
// 因此通过调用toString实现最终初始化
log.info("applicationConfig init, config={}", applicationConfig.toString());
}
}
@Data
@Slf4j
@RefreshScope
@Configuration("applicationConfig")
@ConfigurationProperties(prefix = "application")
public class ApplicationConfig {
private Strig url;
}