Springboot整合Apollo框架

一、Apollo作用

随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址……

对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制……

在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对配置管理的需求。

Apollo配置中心应运而生!Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,具备规范的权限、流程治理等特性。

二、搭建Apollo配置中心

Quick Start:能够在几分钟内在本地环境部署、启动Apollo配置中心(只针对本地测试使用)

1.创建数据库

Apollo服务端共需要两个数据库:ApolloPortalDB和ApolloConfigDB

-- 数据库ApolloConfigDB 导入apolloconfigdb.sql

select `NamespaceId`, `Key`, `Value`, `Comment` from ApolloConfigDB.Item;

-- 数据库ApolloPortalDB 导入apolloportaldb.sql

select `Id`, `AppId`, `Name` from ApolloPortalDB.App;

2.Apollo服务端连接这两个数据库

修改demo.sh

# apollo config db info

apollo_config_db_url=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8

apollo_config_db_username=xxx

apollo_config_db_password=xxx



# apollo portal db info

apollo_portal_db_ur
Apollo是携程开源的一款分布式配置中心,可以解决应用配置的动态管理和分布式环境下的配置同步问题。Spring Boot是一款非常流行的Java框架,提供了快速构建应用程序的能力。在本文中,我们将介绍如何在Spring Boot应用程序中使用Apollo。 1. 引入依赖 在Maven项目中,我们需要在pom.xml文件中添加Apollo相关的依赖: ```xml <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.8.0</version> </dependency> <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-spring-boot</artifactId> <version>1.8.0</version> </dependency> ``` 2. 配置ApolloSpring Boot应用程序的application.yml(或application.properties)文件中,我们需要添加Apollo相关的配置信息,例如: ```yaml # Apollo配置 app.id = your_app_id apollo.meta = http://config-service-url:8080 ``` 其中,your_app_id是你在Apollo配置中心中创建的应用程序ID,config-service-url是你的Apollo配置中心的服务地址。 3. 创建配置类 为了在Spring Boot应用程序中使用Apollo,我们需要创建一个配置类来注入Apollo配置。例如: ```java @Configuration public class ApolloConfig { @Value("${app.id}") private String appId; @Value("${apollo.meta}") private String apolloMeta; @Bean public ApolloConfigBean apolloConfigBean() { ApolloConfigBean apolloConfigBean = new ApolloConfigBean(); apolloConfigBean.setAppId(appId); apolloConfigBean.setMetaServerAddress(apolloMeta); return apolloConfigBean; } @Bean public Config apolloConfig(ApolloConfigBean apolloConfigBean) { Config config = ConfigService.getConfig(apolloConfigBean.getAppId()); ConfigFileChangeListener configFileChangeListener = new ConfigFileChangeListener(); config.addChangeListener(configFileChangeListener); return config; } } ``` 在这个配置类中,我们使用@Value注解获取application.yml文件中的配置信息,然后创建ApolloConfigBean并返回。在第二个@Bean注解中,我们使用ConfigService.getConfig方法获取Config对象,并添加一个ConfigFileChangeListener来监听配置文件的变化。 4. 创建监听器 为了在应用程序运行时动态获取配置信息,我们需要创建一个ConfigFileChangeListener来监听配置文件的变化。例如: ```java public class ConfigFileChangeListener implements ConfigChangeListener { private static final Logger LOGGER = LoggerFactory.getLogger(ConfigFileChangeListener.class); @Override public void onChange(ConfigChangeEvent configChangeEvent) { LOGGER.info("Config file changed: {}", configChangeEvent.changedKeys()); for (String key : configChangeEvent.changedKeys()) { ConfigChange change = configChangeEvent.getChange(key); LOGGER.info("Change - key: {}, oldValue: {}, newValue: {}, changeType: {}", change.getPropertyName(), change.getOldValue(), change.getNewValue(), change.getChangeType()); } } } ``` 在这个监听器中,我们使用ConfigChangeEvent来获取配置文件的变化信息,并将其打印到日志中。 5. 测试应用程序 现在,我们已经完成了Spring Boot应用程序和Apollo整合。我们可以在应用程序中使用@Value注解来获取配置信息,例如: ```java @RestController @RequestMapping("/") public class HelloController { @Value("${hello:Hello World!}") private String hello; @GetMapping public String hello() { return hello; } } ``` 在这个示例中,我们使用@Value("${hello:Hello World!}")来获取名为hello的配置项的值。如果这个配置项不存在,我们将使用默认值Hello World!。 现在,我们可以运行应用程序并访问http://localhost:8080来测试。如果我们在Apollo配置中心中更改名为hello的配置项的值,我们将看到应用程序动态更新该配置项的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一朵祁连小鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值