简单实现SpringBoot中对Apollo配置的动态监听

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单实现SpringBoot中对Apollo配置的动态监听相关的知识,希望对你有一定的参考价值。

参考技术A 1.实现CommandLineRunner接口,自定义一个任务类,交由spring容器管理对象;
2.在任务类中使用@ApolloConfig注解注入一个Config对象,默认注入的是命名空间为application的配置对象(可配置其他的命名空间);
3.使用注入的config对象中的addChangeListener()方法添加一个事件监听器,可以在监听器中实现具体的逻辑;
4.当Apollo被监听的配置更新时,就会执行监听器中的逻辑(完成).

apollo客户端springboot实战

1. apollo客户端springboot实战(四)

1.1. 前言

  经过前几张入门学习,基本已经完成了apollo环境的搭建和简单客户端例子,但我们现在流行的通常是springboot的客户端,所以这章还是来学习下springboot客户端如何和apollo整合
  接下来我来改造我自己的项目,我本来的项目接入的是spring config配置管理中心,读的git上的配置,它没有管理界面,功能也比较单一,所以我打算替换成apollo

1.2. 配置改动

  1. 添加配置类,这个@EnableApolloConfig 也可以直接放在启动类上,我单独一个配置类起到一定隔离,不需要的时候把apollo这个相关包注掉或删掉

  2. 这是我原本的config配置

  1. 现在先前的config配置完全注掉,添加个application.yml配置个基本信息,原来存在git上的配置则统一放apollo上去

  2. 从1.2.0版本开始,如果希望把日志相关的配置(如logging.level.root=info或logback-spring.xml中的参数)也放在Apollo管理,那么可以额外配置apollo.bootstrap.eagerLoad.enabled=true来使Apollo的加载顺序放到日志系统加载之前,不过这会导致Apollo的启动过程无法通过日志的方式输出(因为执行Apollo加载的时候,日志系统压根没有准备好呢!所以在Apollo代码中使用Slf4j的日志输出便没有任何内容)-----这是官方原话,但我实际操作发现我用 apollo.bootstrap.eagerLoad.enabled=false根本没有日志打印,打了spring logo就没了,浏览器测试下接口通的,说明启动完成了,但日志不起效果,反而用true就有我自己系统日志了,所以我这里设了true

  3. 配置pom

 <!-- 阿波罗配置中心 -->
 <dependency>
     <groupId>com.ctrip.framework.apollo</groupId>
     <artifactId>apollo-client</artifactId>
     <version>1.3.0</version>
 </dependency>
  1. 其他我们原先在application.properties中配置的属性全部移到appollo

1.3. 总结

  阿波罗客户端的配置还是相当简单的,几乎没什么变动,如果有监听配置改动的需求,它还提供了一个监听注解@ApolloConfigChangeListener,想要完全了解apollo就去看看它的文档,还是蛮全的,文档地址:

https://github.com/ctripcorp/apollo/wiki

以上是关于简单实现SpringBoot中对Apollo配置的动态监听的主要内容,如果未能解决你的问题,请参考以下文章

Java之 Spring Cloud 微服务的开源配置中心Apollo(第四个阶段)SpringBoot项目实现商品服务器端调用

Java之 Spring Cloud 微服务的开源配置中心Apollo(第四个阶段)SpringBoot项目实现商品服务器端调用

linux安装apollo;以及springcloud采用apollo配置时使用本地配置覆盖;springboot从apollo拉取配置

终于把Apollo存储加密这件事搞定了

SpringBoot集成Apollo配置中心

SpringBoot 配置Apollo