Spring Boot集成apollo配置中心

1、Appid

确保classpath:/META-INF/app.properties文件存在,并且其中内容形如:app.id=YOUR-APP-ID

服务端的appid

2、Environment

应用在不同的环境可以有不同的配置, Environment可以通过以下3种方式的任意一个配置:

  • 2.1 通过Java的System Property env来指定环境
    -Denv=YOUR-ENVIRONMENT
  • 2.2 通过操作系统的System Environment env来指定环境
  • 2.3 通过配置文件来指定env=YOUR-ENVIRONMENT
    对于Mac/Linux,文件位置为/opt/settings/server.properties
    对于Windows,文件位置为C:\opt\settings\server.properties
    目前,env支持以下几个值(大小写不敏感):
    DEV, FAT, UAT, PRO

服务端的environment

3、本地缓存

Apollo客户端会把从服务端获取到的配置在本地文件系统缓存一份,当去服务器读取配置失败时,会使用本地缓存的。

Mac/Linux: /opt/data/{appId}/config-cache

Windows: C:\opt\data{appId}\config-cache

确保目录存在,且应用有读写权限。

4、通过System Property的方式传入如下信息

Appid:应用的身份信息,保证唯一。
Env:系统环境信息。包含:dev,fat,pro
Meta server:对应环境的metaserver地址。

配置内容为:-Dapp.id=fintech01 -Denv=dev -Ddev_meta=http://172.18.100.168:8887
注:app.id对应的值即为通过portal客户端创建项目时填写的应用id。

Eclipse设置vm options的方式:
项目右键---------》Run As ---------》Run Configurations ---------》选择(x)=Arguments面板 ---------》在VM arguments中,最后位置添加-Dapp.id=fintech01 -Denv=dev -Ddev_meta=http://172.18.100.168:8887 点击 Apply保存。



IntelliJ IDEA设置vm options的方式:
顶部工具栏---------》Run ---------》Edit configurations ---------》在server视图中,VM options中添加-Dapp.id=fintech01 -Denv=dev -Ddev_meta=http://172.18.100.168:8887,点击保存。

5、pom.xml添加依赖

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

6、代码接入

1.在微服务应用启动中使用apollo配置中心获取配置信息
    打开应用对应的启动类Application,在启动类上加上如下注解:@EnableApolloConfig
2.应用中获取配置信息的几种方式

2.1.通过@value注解获取配置值
      例如:
        @Value(“${test}”)
        private String test;
    2.2.通过@ConfigurationProperties注入到bean对象中获取配置信息
      例如:
        @ConfigurationProperties(prefix=”test”)
        Public class Myprop{
           private Map<String,String> prop = Maps.newLinkedHashMap();
        }
      在被spring管理的类中使用:
      @Autowired
      private Myprop myprop;
      prop.getProp().get(“name”);
      注:使用这种方式获取的属性值不会实时更新。
    2.3.通过@ApolloConfig获取注入的config对象,再通过config对象获取属性值
      例如:
        在被spring管理的类中使用:
        @ApolloConfig
        private Config config;
        config.getProperty(“name”,null);
    2.4.通过java API的方式获取
      Config config = ConfigService.getAppConfig();
      String someKey = "someKeyFromDefaultNamespace";
      String someDefaultValue = "someDefaultValueForTheKey";
      String value = config.getProperty(someKey, someDefaultValue);
    2.5.在配置文件中获取属性值
      例如:在application.properties中,
      spring.datasource.name=${jdbc.name}
      spring.datasource.password=${jdbc.password}
3.将配置信息迁移至配置中心:
    打开配置中心客户端portal系统,找到对应的应用,在应用中配置相应的属性信息。
    将对应的本地的配置信息删除(提前做好备份处理)。

    重启应用并测试,能正确读到配置项的内容,例如:数据库可以正常连接等;说明与配置中心对接成功。

猜你喜欢

转载自blog.csdn.net/lovelichao12/article/details/81013257