由于Apollo支持的图形化界面相对于我们更加的友好,所以此次我们使用Apollo来做配置中心
本篇文章实现了使用Apollo配置了dev和fat两个环境下的属性配置。 Apollo官方文档https://github.com/ctripcorp/apollo/wiki
现在的数据库连接信息如下所示:
#!/bin/bash
sh apollo-portal-1.0.0-github/scripts/startup.sh
sh apollo-configservice-fat/scripts/startup.sh
sh apollo-adminservice-fat/scripts/startup.sh
sh ./apollo-configservice-dev/scripts/startup.sh
sh ./apollo-adminservice-dev/scripts/startup.sh
<apollo.version>1.0.0</apollo.version>
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>${apollo.version}</version>
</dependency>
App:
Id: demo
apollo:
Meta: http://10.10.10.10:8080 #指定dev环境
@Service
public class ConfigRefresher implements ApplicationContextAware {
private ApplicationContext applicationContext;
@ApolloConfig
private Config config;
@PostConstruct
private void initialize() {
refresher(config.getPropertyNames());
}
@ApolloConfigChangeListener
private void onChange(ConfigChangeEvent changeEvent) {
refresher(changeEvent.changedKeys());
}
private void refresher(Set<String> changedKeys) {
for (String changedKey : changedKeys) {
System.out.println("this key is changed:"+changedKey);
}
this.applicationContext.publishEvent(new EnvironmentChangeEvent(changedKeys));
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
}
@SpringBootApplication
@EnableApolloConfig
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}