笔者在工作中遇到如下问题,随着程序功能越多,配置文件不断增加,一些功能的开关、服务器地址、接口地址、不同环境的一些配置文件不同,这些在每次发布不同环境、更新项目时都比较繁琐,后来学习微服务时接触到了Spring Cloud Config配置中心,用了一段时间发现比之前方便不少,但是还是比较繁琐和麻烦,而且功能还达不到生产级,只能小规模场景下使用,在中大规模企业场景下不建议采用。后来了解到携程Apollo配置中心,Apollo支持完善的管理界面,支持多环境,配置变更实时生效,权限和配置审计等多种生产级功能,而且在携程到微服务架构体系中也运用了这个,在国内众多互联网公司也有落地案例,就开始去接触了解。最后结合工作和学习的一些经验分享给大家Apollo的入门使用和一些走过的坑,本篇文章主要介绍使用Spring Boot项目整合Apollo配置中心来管理发布配置文件。

简要步骤:

①、使用Apollo创建一个项目

②、新增项目配置文件

③、创建一个Spring Boot项目

④、修改配置文件、编写Java类

⑤、使用Apollo发布项目配置文件

⑥、启动本地项目查看从Apollo配置中心读取的文件

 

推荐博客:

Apollo架构体系、Apollo运行原理、Apollo配置中心简单介绍:

Linux下配置安装Apollo、Centons下配置安装Apollo:

Spring Boot项目整合Apollo配置中心:

Spring boot项目整合apollo错误:for env UNKNOWN from com.ctrip.framework.apollo.internals.DefaultMetaServer

 

详细步骤:

一、使用Apollo创建一个项目

1、登录打开Apollo

Spring boot 整合 r2dbc pg spring boot整合apollo_Code

2、新建项目

Spring boot 整合 r2dbc pg spring boot整合apollo_Code_02

Spring boot 整合 r2dbc pg spring boot整合apollo_Code_03

 

二、新增项目配置文件 

1、点击文本,选择编辑

Spring boot 整合 r2dbc pg spring boot整合apollo_spring_04

Spring boot 整合 r2dbc pg spring boot整合apollo_配置文件_05

2、编辑完提交 

 

Spring boot 整合 r2dbc pg spring boot整合apollo_spring_06

 

3、添加集群

Spring boot 整合 r2dbc pg spring boot整合apollo_配置文件_07

注:这里只配置了DEV环境,这里的集群名称后面在项目配置中会用到。

Spring boot 整合 r2dbc pg spring boot整合apollo_spring_08

Spring boot 整合 r2dbc pg spring boot整合apollo_spring_09

 

三、创建Spring Boot项目

注:这里用了之前的一篇boot整合jpa的案例,大家也可以自己新建一个,后面提供了核心实现代码

Spring Boot2.0系列教程之 JPA 和 Thymeleaf 实践(五):

github源码地址:https://github.com/zjh746140129/Spring-Boot2.0

pom文件新增

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

四、修改配置文件、编写Java类

1、配置文件application.properties,这里app.id要和Apollo里面项目的appId一致

app.id=test-demo
apollo.bootstrap.enabled = true
apollo.meta=http://192.168.234.155:8080
spring.profiles.active=dev

Spring boot 整合 r2dbc pg spring boot整合apollo_Code_10

2、配置文件配置文件application-dev.properties,这里的cluster=dev是Apollo中集群的名字

#apollo的配置
apollo.cluster=dev

Spring boot 整合 r2dbc pg spring boot整合apollo_Apollo配置中心_11

 

2、编写Java类

package com.boot.config;

import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

/**
 * Created by zhoujh on 2019/1/9.
 */
@Configuration
@EnableApolloConfig
public class BootConfig {

    @Value("${CONFIG.PlatFormCode}")
    private String PlatFormCode;

    public String getPlatFormCode() {
        return PlatFormCode;
    }

    public void setPlatFormCode(String platFormCode) {
        PlatFormCode = platFormCode;
    }
}

Spring boot 整合 r2dbc pg spring boot整合apollo_Apollo配置中心_12

在controller测试从Apollo配置中心获取

Spring boot 整合 r2dbc pg spring boot整合apollo_spring_13

 

五、使用Apollo发布项目配置文件

1、点击发布

Spring boot 整合 r2dbc pg spring boot整合apollo_Apollo配置中心_14

 

六、启动本地项目查看从Apollo配置中心读取的文件

1、修改项目启动设置

-Denv=DEV 
-Denv就是开发环境 DEV表示阿波罗里面的集群名称
linux服务器启动jar 也需要加一个这个,例如 java -Denv=DEV  -jar  abc.jar

Spring boot 整合 r2dbc pg spring boot整合apollo_Code_15

 

Spring boot 整合 r2dbc pg spring boot整合apollo_Code_16

2、启动项目查看控制台是否连接Apollo

Spring boot 整合 r2dbc pg spring boot整合apollo_Apollo配置中心_17

 3、查看Apollo实例列表

注:只要应用连接上这里就会有,如果没有说明没有连接上Apollo

Spring boot 整合 r2dbc pg spring boot整合apollo_Apollo配置中心_18

 

4、测试访问,说明已经读取到

Spring boot 整合 r2dbc pg spring boot整合apollo_Code_19

5、添加配置文件Apollo再发布

Spring boot 整合 r2dbc pg spring boot整合apollo_spring_20

6、再访问首页查看控制台

可以看到已经再次获取到了

Spring boot 整合 r2dbc pg spring boot整合apollo_配置文件_21