本文已参与「新人创作礼」活动,一起开启掘金创作之路
1、项目初始化
创建Springboot项目,添加项目依赖
<!-- https://mvnrepository.com/artifact/com.ctrip.framework.apollo/apollo-client -->
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>1.9.2</version>
</dependency>
修改application.properties配置文件,如下
app.id=apollo-test
# apollo的configServer地址
apollo.meta=http://192.168.80.243:8080
# apollo的configServer地址
apollo.config-service= http://192.168.80.243:8080
apollo.bootstrap.enabled=true
apollo.bootstrap.eagerLoad.enabled=true
2、测试使用
2.1 界面说明
创建项目,项目的AppId要和配置文件application.properties一致
表格:以表格的形式显示所有配置,通常使用它来修改单一配置
文本:以文本框的形式显示所有配置,通常使用它来批量增加配置
更改历史:显示历史的修改情况
实例列表:显示使用这些配置的所有实例
2.2 配置迁移
点击文本,右边按钮变动。点击修改配置按钮,可以在里面添加配置,注意:需要是**properties**格式的。如果之前有项目可以直接把之前的项目配置复制里面去。
添加完成配置后,点击右上角的提交修改。修改完成后需要点击上面的发布程序才能识别到。
server.port=8081
spring.application.name=apollo-test
logging.file.path=D:\Downloads\apollo-use-cases-master\apollo-test
apollo.value=11
点击发布,apollo上面的配置就算完成了
启动项目,会发现项目正常启动,修改端口号或者路径配置,重启项目也会发现配置会生效
2.3 热更新
在项目中添加类,来获取配置中的值
/**
* @Description:
* @author: zhuiFeng
* @date: 2022年01月12日 14:55
*/
@RestController
public class Controller {
@Value("${apollo.value}")
private String apolloValue;
@RequestMapping("")
public String test(){
return "获取到apollo.value的值为:"+apolloValue;
}
}
重启项目,请求接口http://localhost:8081/,返回的结果是:
获取到apollo.value的值为::11
修改apollo中配置中 apollo.value的值为 我爱北京天安门,点击发布后,调用接口返回的结果是:
获取到apollo.value的值为:我爱北京天安门
2.4 命名空间
有时侯项目的配置太多,在一个文件里不太容易维护。有时候这些配置可能和其他项目有些公共的地方,维护起来不太方便,我们可以使用命名空间来解决这些问题
命名空间:可以创建公有的一些配置,也可以创建私有的个性化的配置,支持yml,properties,txt,xml,json等格式
2.4.1 创建
进入项目界面,点击右下角的添加Namespace,进入添加NameSpace界面后,选择创建NameSpace
创建一个名为 common1,格式为yml文件,类型为public,如下
点击提交后,返回项目界面,就会出现项目中
2.4.2 测试使用
编辑公共配置common1,添加如下配置,添加完成后进行发布
apollo:
value1: 编码中。。
在项目中添加接口
@Value("${apollo.value1}")
private String apolloValue1;
@RequestMapping("/getConfig1")
public String getConfig(){
return "获取到apollo.value1的值为:"+apolloValue1;
}
修改项目中的application.properties配置文件,添加配置。
注意:非properties配置文件需要带上后缀名,公共的配置需要加上部门前缀,我们的部门为 TEST1,所以文件名为 TEST1.common1.yml
apollo.bootstrap.namespaces=application,TEST1.common1.yml
重启项目,调用接口http://localhost:8081/getConfig1,获取到了 apollo.value1的值
获取到apollo.value1的值为:编码中。。
2.4.3 优先级关系
修改application的配置以及公共配置common1,添加apollo.value和apollo.value1的配置,点击发布。
发现输出的都是apollo里application的内容。
修改项目中的配置application.properties文件内容,把公共配置提前,重启项目
# 之前
apollo.bootstrap.namespaces=application,TEST1.common1.yml
# 之后
apollo.bootstrap.namespaces=TEST1.common1.yml,application
调用接口发现,结果是通用配置中的内容
结论:配置的覆盖是由先后顺序造成的,可以根据先后顺序个性化调整配置内容。两个配置文件中的内容如果有重复的,位置在前的配置文件内容会覆盖后面配置文件里重复的内容