本人为第一次接触apollo,如下为我自己配置的过程,仅供参考。

本文只包含Apollo的使用端配置;apollo服务端不包含。

前置准备工作:

1、创建spring boot的项目。

2、Apollo服务端已经搭建并获取到 “登录地址” 和 “应用连接地址”【采坑:注意这里有两个地址,是不一样】

3、使用Apollo登录地址,进行登录apollo配置中心(用户密码在搭建服务端是获取,或者咨询相关搭建人),进行配置项目名(app.id);我这里是:fmfcps_dev(命名根据项目组的要求自行命名即可,无特别限制)。

spring boot 接入elk springboot接入apollo_配置项

4、配置你要的配置项key-value

配置完了记得点发布。

spring boot 接入elk springboot接入apollo_spring boot 接入elk_02

 

开始配置》》》》》》》》》》》》》》

1、在pom文件中添加Apollo的依赖

<!--apollo相关jar包-->
<dependency>
	<groupId>com.ctrip.framework.apollo</groupId>
	<artifactId>apollo-client</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
	<groupId>com.ctrip.framework.apollo</groupId>
	<artifactId>apollo-core</artifactId>
	<version>1.1.0</version>
</dependency>

这里采坑一下,这里依赖注入的jar 可能和原有项目的jar冲突了(版本不一致或者引用),导致Apollo有问题 ;如果有就在maven引用哪里查看一下,把冲突的jar 在pom.xml中重新引入一下,即可解决。

这里可以看见,包被覆盖了;

spring boot 接入elk springboot接入apollo_bootstrap_03

重新引用 

spring boot 接入elk springboot接入apollo_配置项_04

2、编写application.yml文件

apollo.bootstrap.namespaces: DEPT.hilo-base-config,application

apollo:

  meta: 这里配置Apollo应用连接地址(采坑:别配置成登录地址了,是应用连接地址)

  bootstrap:

    eagerLoad:

     enabled: true

spring boot 接入elk springboot接入apollo_spring boot 接入elk_05

3、配置app.propreties;这里可以将这个配置 加入到application.yml文件一起(我这里是项目组要求建立该文件)。

app.id=你在应用中心配置项目key

spring boot 接入elk springboot接入apollo_jar_06

 

如果放在application.yml文件中如下:

app:
  id: 你在应用中心配置项目key

apollo.bootstrap.namespaces: DEPT.hilo-base-config,application

apollo:

  meta: 这里配置Apollo应用连接地址(采坑:别配置成登录地址了,是应用连接地址)

  bootstrap:

    eagerLoad:

     enabled: true

 

4、springboot启动类添加注解@EnableApolloConfig

spring boot 接入elk springboot接入apollo_bootstrap_07

5、Apollo配置项的使用

1)在配置文件中使用,如数据库连接之类

2)使用注解方式使用

3)方法获取配置项

在开发中根据不同的场景。

配置文件:

使用${在Apollo上配置的key}

spring boot 接入elk springboot接入apollo_java_08

 注解方式:

spring boot 接入elk springboot接入apollo_java_09

方法获取配置项:

spring boot 接入elk springboot接入apollo_java_10

 上面截图中java类代码,可以直接运行main:

import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigChangeListener;
import com.ctrip.framework.apollo.ConfigService;
import com.ctrip.framework.apollo.model.ConfigChange;
import com.ctrip.framework.apollo.model.ConfigChangeEvent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

 
public class SimpleApolloConfigDemo {
  private static final Logger logger = LoggerFactory.getLogger(SimpleApolloConfigDemo.class);
  private String DEFAULT_VALUE = "undefined";
  private Config config;
 
  public SimpleApolloConfigDemo() {
    ConfigChangeListener changeListener = new ConfigChangeListener() {
      @Override
      public void onChange(ConfigChangeEvent changeEvent) {
        logger.info("Changes for namespace {}", changeEvent.getNamespace());
        for (String key : changeEvent.changedKeys()) {
          ConfigChange change = changeEvent.getChange(key);
          logger.info("Change - key: {}, oldValue: {}, newValue: {}, changeType: {}",
              change.getPropertyName(), change.getOldValue(), change.getNewValue(),
              change.getChangeType());
        }
      }
    };
    config = ConfigService.getAppConfig();
    config.addChangeListener(changeListener);
  }
 
  private String getConfig(String key) {
    String result = config.getProperty(key, DEFAULT_VALUE);
    logger.info(String.format("Loading key : %s with value: %s", key, result));
    return result;
  }

public static void main(String[] args) throws IOException {
    SimpleApolloConfigDemo apolloConfigDemo = new SimpleApolloConfigDemo();
  String key ="appname";
  String value apolloConfigDemo.getConfig(key);
System.out.print("value:"+value);
    
  }
 
  
}

 

另外说明:

Apollo配置apollo.meta 参数的方式有很多种方式;具体可以参考: https://github.com/ctripcorp/apollo/wiki/Java客户端使用指南

 里面的方式有8、9种,我目前尝试了 application 方式 和 jvm方式

jvm配置方式如下

在启动项的jvm中配置 “应用连接地址”,重跑;

jvm 中加入(dev 代表运行环境为dev):

-Denv=dev
-Ddev_meta=应用连接地址

idea中配置 jvm

spring boot 接入elk springboot接入apollo_jar_11

 

注意:Apollo会在本地缓存数据,新增了配置 需要删除本地缓存文件;

缓存在 c:/opt/data/XX ;xx为你的 “app.id”;删除文件即可。

也可以自定义缓存路径 具体可以参考  https://github.com/ctripcorp/apollo/wiki/Java客户端使用指南

spring boot 接入elk springboot接入apollo_bootstrap_12