记录spring、springboot集成apollo配置中心

一, spring集成apollo,前提是apollo配置中心服务端已经在运行中
在这里插入图片描述
上面是我在阿里云服务搭建的apollo配置中心服务端,登录后的样子。没有搭建服务端的小伙伴,请先搭建好apollo的服务端
然后点击‘创建项目’,新建测试用的项目
在这里插入图片描述

填写类容:
在这里插入图片描述

在里面新建测试需要的配置,kay-value格式的
在这里插入图片描述
在这里插入图片描述创建/x修改好了,需要发布生效
在这里插入图片描述
接下来我们在我们的项目里面配置使用apollo注册中心的里面的配置
在项目的resources里面创建目录‘META-INF’,然后在目录下创建配置文件‘app.properties’,
内容如下:
在这里插入图片描述

#自定义的appid名称,区分不同的应用
app.id=20201201
#eureka配置中心地址
apollo.meta=http://139.196.186.76:49006
#启用apollo配置开关
apollo.bootstrap.enabled=true
apollo.bootstrap.eagerLoad.enabled=true

apollo 使用配置的命名空间,多个以逗号分隔

apollo.bootstrap.namespaces = application在这里插入图片描述
然后,在resource文件夹下创建‘apollo-env.properties’配置文件,内容如下:
dev.mate=http://139.196.186.76:49006 #加入apollo在远程服务器上的话,项目在本地测试的话,ip端口需要换成你的apollo远程访问ip+远程开放端口
apollo.autoUpdateInjectedSpringProperties=true
在这里插入图片描述

pom 文件添加:



 <!--apollo-->
        <dependency>
            <groupId>com.ctrip.framework.apollo</groupId>
            <artifactId>apollo-client</artifactId>
            <version>1.3.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.ctrip.framework.apollo/apollo-core -->
        <dependency>
            <groupId>com.ctrip.framework.apollo</groupId>
            <artifactId>apollo-core</artifactId>
            <version>1.3.0</version>
        </dependency>


在spring项目的 application.xml里面配置apollo:

<apollo:config order="2"/>
    <apollo:config namespaces="application"/>

    <bean id="appPropertyPlaceholderConfigurer"
          class="cn.glor.monopoly.apollo.config.AppPropertyPlaceholderConfigurer"></bean>
/**
 * @描述
 * @创建人 joy_qiu
 * @创建时间 2020-12-24-18:19
 * @修改人和其它信息
 */
public class AppPropertyPlaceholderConfigurer extends PropertySourcesPlaceholderConfigurer {
    @Override
    protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props) throws BeansException {
        try {
//从apollo中获取所有配置信息
            Config config = ConfigService.getAppConfig(); //config instance is singleton for each namespace and is never null
            Set<String> fieldnames = config.getPropertyNames();
//遍历配置信息
            for(String fieldname : fieldnames){
                String attributeName=fieldname;
                String attributeValue = config.getProperty(fieldname,"");
                System.out.println("attributeName:"+attributeName + "; attributeValue:" + attributeValue );
                props.put(attributeName,attributeValue);
            }
        } catch (Exception e) {
            e.printStackTrace();
            logger.info("获取apollo配置失败");
        }
        super.processProperties(beanFactoryToProcess, props);
    }
}

然后,在本地的环境是Windows的话需要在c://opt/创建settings 文件夹,Linux 环境是在/opt/settings/下面创建,并在settings文件夹下创建文件server.properties文件,注意 参数 ‘idc’ 是指定集群环境的,应为一般项目会有多个环境:dev,uat,pro等等内容如下:

env=DEV
apollo.meta=http://139.196.186.76:49006
apollo.configService=http://139.196.186.76:49006
#配置idc 表示指定集群的配置,不配置使用default集群 的配置
#idc=dev
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
然后,编写测试的接口:
在这里插入图片描述
然后启动项目,测试接口:

在这里插入图片描述
在这里插入图片描述
访问接口的结果和apollo服务端的一直,然后我们测试下,修改apollo服务端的参数值,看项目是否可以接受到:
在这里插入图片描述
记得修改后,要点击发布才能生效
然后直接访问接口:
在这里插入图片描述
测试成功,如果远程的apollo服务停止,会读取本地的缓存配置文件,我们看看配置文件在哪里,apollo默认会在windows环境是在C://opt/data/appid/下面

在这里插入图片描述
Linux 环境是在/opt/settings/下面

如果是现有项目要集成apollo的话,可以现有项目的配置文件复制到apollo,如下图点击‘文本’,参数格式就和项目里面的格式一样,直接将原项目的参数复制到文本框里面就好了
在这里插入图片描述
点击右上角的对号,提交修改
在这里插入图片描述添加成功,点击发布就可以使用了

springboot集成apollo,比spring集成要简单多了,本地的/opt/settings/下面配置不变,代码请看:https://github.com/qzy-joe/springboot_apollo.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值