简单配置
使用@Value注解的配置会自动刷新配置
复杂对象
方案一:
@Component("systemConfig")
@ConfigurationProperties(prefix = "system")
@EnableApolloConfig("system.yml")
public class SystemConfig {
private Resource filePath;
private Resource tempFilePath;
}
public class ApolloRefreshConfig implements ApplicationContextAware {
@Autowired
private SystemConfig systemConfig;
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
@ApolloConfigChangeListener(value = "system.yml",interestedKeyPrefixes="system")
private void configChange(ConfigChangeEvent changeEvent){
this.applicationContext.publishEvent(new EnvironmentChangeEvent(changeEvent.changedKeys()));
log.info("appConfig,{}",JSON.toJSONString( systemConfig));
}
方案二:
@Component("systemConfig")
@ConfigurationProperties(prefix = "cword")
@RefreshScope
@EnableApolloConfig("cword")
public class SystemConfig {
private Resource filePath;
private Resource tempFilePath;
@Autowired
private org.springframework.cloud.context.scope.refresh.RefreshScope refreshScope;
@ApolloConfigChangeListener("cword")
private void configChange(ConfigChangeEvent changeEvent){
refreshScope.refresh("systemConfig");
}
}