Apollo实践

1、项目初始化 创建Springboot项目,添加项目依赖 com.ctrip.framework.apollo apollo-client 1.9.2 修改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; } } 重启项目,请求接口[InvalidCharacterError: """ did not match the Name production],返回的结果是: 获取到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 调用接口发现,结果是通用配置中的内容 结论:配置的覆盖是由先后顺序造成的,可以根据先后顺序个性化调整配置内容。两个配置文件中的内容如果有重复的,位置在前的配置文件内容会覆盖后面配置文件里重复的内容