【Spring Boot】Spring Boot之整合Apollo配置中心
2021-02-12 23:18
标签:end sch pid type publickey vat for 集群 round 一、Apollo配置中心简单介绍 二、整合步骤 1)添加Maven依赖 2)添加apollo配置在application.properties或bootstrap.properties 非特殊场景下只需要这两个配置 其他配置: 3)从Apollo中获取配置 1、Spring Placeholder方式即@Value(${key})方式,该方式支持属性自动更新(即Apollo属性更新后会马上通知应用更新) 2、Spring Boot提供的@ConfigurationProperties使用方式,该方式默认不会自动更新,如果需要在Apollo配置变化时自动更新注入的值,需要配合使用EnvironmentChangeEvent或RefreshScope。 3、Apollo API使用方式 * 获取默认namespace的配置 4、Apollo Annotation使用方式 * @ApolloConfig 【Spring Boot】Spring Boot之整合Apollo配置中心 标签:end sch pid type publickey vat for 集群 round 原文地址:https://www.cnblogs.com/756623607-zhang/p/12728614.html
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
# 注入默认application namespace的配置示例
apollo.bootstrap.enabled=true
# Apollo application appid
app.id=001
# 指定Apollo Meta Server (默认http://apollo.meta)(默认Meta server与config server地址一样)
apollo.meta=http://localhost:8080
server.port=9090
#1、 注入默认application namespace的配置示例
apollo.bootstrap.enabled=true
# Apollo application appid
app.id=001
# 指定Apollo Meta Server (默认http://apollo.meta)(默认Meta server与config server地址一样)
apollo.meta=http://localhost:8080
#2、注入默认application namespace或多个非默认namespace的配置示例
#apollo.bootstrap.namespaces = application,TEST1.public.yml,TEST2.app002_public
#3、将Apollo配置加载提到初始化日志系统之前(1.2.0+) (默认false)
# 使Apollo的加载顺序放到日志系统加载之前,不过这会导致Apollo的启动过程无法通过日志的方式输出
#apollo.bootstrap.eagerLoad.enabled = true
# 指定apollo cluster (默认default)
#apollo.cluster=SomeCluster
# 指定环境
# 如果是运行jar文件,需要注意格式是java -Denv=YOUR-ENVIRONMENT -jar xxx.jar
# 设置内存中的配置项是否保持和页面上的顺序一致(默认false)
#apollo.property.order.enable=true
# 配置访问秘钥
#apollo.accesskey.secret=1cf998c4e2ad4704b45a98a509d15719
# Spring应用通常会使用Placeholder来注入配置,使用的格式形如${someKey:someDefaultValue},如${timeout:100}。冒号前面的是key,冒号后面的是默认值。
# 建议在实际使用时尽量给出默认值,以免由于key没有定义导致运行时错误。
# 从v0.10.0开始的版本支持placeholder在运行时自动更新,而@ConfigurationProperties如果需要在Apollo配置变化时自动更新注入的值,需要配合使用EnvironmentChangeEvent或RefreshScope
# 通过设置false来关闭placeholder在运行时自动更新功能(默认true)
#apollo.autoUpdateInjectedSpringProperties=false
@Value("${v1:defaultValue}")
public String v1;*
@Configuration
@ConfigurationProperties(prefix = "demo")
@Data
public class ApplicationProperties {
public String demo1;
public String demo2;
public String demo3;
public String demo4;
}
* 获取非默认的配置
* 监听配置变化事件@GetMapping("test2")
public String test2() {
// 获取默认namespace的配置(application),key为v1的值
Config config = ConfigService.getAppConfig();
String someKey = "v1";
String someDefaultValue = "defaultValue";
String value = config.getProperty(someKey, someDefaultValue);
System.out.println(value);
Config publicConfig = ConfigService.getConfig("TEST1.public.yml");
String someKey2 = "public_key";
String someDefaultValue2 = "defaultValue";
String value2 = publicConfig.getProperty(someKey2, someDefaultValue2);
System.out.println(value2);
// 非yaml/yml/properties格式的namespace,获取方式
ConfigFile configFile = ConfigService.getConfigFile("TEST1.public", ConfigFileFormat.YML);
String content = configFile.getContent();
System.out.println(content);
// 监听配置变化事件
config.addChangeListener(new ConfigChangeListener() {
@Override
public void onChange(ConfigChangeEvent changeEvent) {
System.out.println("Changes for namespace " + changeEvent.getNamespace());
for (String key : changeEvent.changedKeys()) {
ConfigChange change = changeEvent.getChange(key);
System.out.println(String.format("Found change - key: %s, oldValue: %s, newValue: %s, changeType: %s", change.getPropertyName(), change.getOldValue(), change.getNewValue(), change.getChangeType()));
}
}
});
return v1;
}
用来自动注入Config对象
* @ApolloConfigChangeListener
用来自动注册ConfigChangeListener
* @ApolloJsonValue
用来把配置的json字符串自动注入为对象@RestController
public class ApolloAnnotionUse {
// 注入默认的名称空间配置
@ApolloConfig
private Config config;
@ApolloConfig("application")
private Config anotherConfig;
// 注入指定的名称空间配置
@ApolloConfig("TEST1.public.yml")
private Config yetAnotherConfig;
// 用来把配置的json字符串自动注入为对象
@ApolloJsonValue("${jsonBeanProperty:[]}")
private List
文章标题:【Spring Boot】Spring Boot之整合Apollo配置中心
文章链接:http://soscw.com/index.php/essay/54655.html