springboot整合apollo配置中心

springboot整合apollo配置中心

springboot整合apollo配置中心官网文档说明得比较清楚,但还是有一些坑注意的。
官网文档:https://www.apolloconfig.com/#/zh/deployment/quick-start

时间:2021年8月4日 23:49:09

1. 部署一个快速启动环境

我的环境是centos7.9,apollo版本应该1.7.0

# 创建名称为apollo的用户
useradd apollo
# 修改用户密码(root下:123465)
passwd apollo
# 创建名称为apollogroup的组
groupadd apollogroup
gpasswd -a apollo apollogroup
cd /home/apollo

# 安装Git
yum install git

# 克隆项目,没有proxy基本下载不来,建议使用gitee同步仓库再拉取
git clone https://github.com/apolloconfig/apollo-build-scripts

# 初始化数据库脚本
cd apollo-build-scripts

# mysql同机器可以,否则自行连接工具初始化下面的数据库脚本,注意数据库名字
mysql -u root -p
source ./sql/apolloportaldb.sql
source ./sql/apolloconfigdb.sql

修改启动脚本,库连接注意添加时区useSSL=false,我的数据库是mysql5.7.34,不加useSSL=false会连接异常。自行修改mysql的ip。

vi demo.sh
# apollo config db info
apollo_config_db_url="jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false"
apollo_config_db_username=root
apollo_config_db_password=123456

# apollo portal db info
apollo_portal_db_url="jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false"
apollo_portal_db_username=root
apollo_portal_db_password=123456

启动脚本

# 将此目录授权给Apollo用户组
chown -R apollo:apollogroup ./*
# 切换用户
su apollo

# 启动服务
./demo.sh start

启动完成

在这里插入图片描述
访问管理服务:http://192.168.200.128:8070/
账号密码:apollo/admin

2. 创建一个简单的springboot项目

引入依赖Maven:

        <dependency>
            <groupId>com.ctrip.framework.apollo</groupId>
            <artifactId>apollo-client</artifactId>
            <version>1.7.0</version>
        </dependency>

修改配置文件application.properties

#Apollo 配置 https://www.apolloconfig.com/#/zh/usage/java-sdk-user-guide?id=_12-%e5%bf%85%e9%80%89%e8%ae%be%e7%bd%ae
# AppId是应用的身份信息,是从服务端获取配置的一个重要信息。
app.id=my-app-id
# Meta server地址也可以填入IP,如http://1.1.1.1:8080,http://2.2.2.2:8080,
# 不过生产环境还是建议使用域名(走slb),因为机器扩容、缩容等都可能导致IP列表的变化。
apollo.meta=http://192.168.200.128:8080
apollo.cluster=default
apollo.bootstrap.enabled=true
# 指定使用哪个 Namespace 的配置,默认 application。
apollo.bootstrap.namespaces=application
# 为了防止配置中心无法连接等问题,Apollo 会自动将配置本地缓存一份。
apollo.cacheDir=d:\\apollo
# Spring应用通常会使用 Placeholder 来注入配置,如${someKey:someDefaultValue},冒号前面的是 key,冒号后面的是默认值。
# 如果想关闭 placeholder 在运行时自动更新功能,可以设置为 false。
apollo.autoUpdateInjectedSpringProperties=true
#将 Apollo 加载提到初始化日志系统之前
apollo.bootstrap.eagerLoad.enabled=false

编写一个测试controller

@RestController
public class WebController {

    @Value("${test:默认值}")
    private String test;

    @GetMapping("")
    public Object get() {
        return test;
    }
}

在这里插入图片描述

添加apollo配置

访问管理服务:http://192.168.200.128:8070/
账号密码:apollo/admin
在apollo管理中创建一个项目
在这里插入图片描述
添加一个key
在这里插入图片描述
再访问
在这里插入图片描述

3. 添加一个配置监听

@Configuration
public class ApolloConfig {

    @com.ctrip.framework.apollo.spring.annotation.ApolloConfig
    private Config config;

    @Bean
    public void changeListener() {
        config.addChangeListener(new ConfigChangeListener() {
            @Override
            public void onChange(ConfigChangeEvent configChangeEvent) {
                System.out.println("Changes for namespace " + configChangeEvent.getNamespace());
                for (String key : configChangeEvent.changedKeys()) {
                    ConfigChange change = configChangeEvent.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()));
                }
            }
        });
    }
}

触发
在这里插入图片描述
多个注解参考官网:https://www.apolloconfig.com/#/zh/usage/java-sdk-user-guide?id=_323-spring-annotation%e6%94%af%e6%8c%81

posted @ 2022-09-16 00:09  凌康  阅读(140)  评论(0编辑  收藏  举报