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系统,找到对应的应用,在应用中配置相应的属性信息。
将对应的本地的配置信息删除(提前做好备份处理)。
重启应用并测试,能正确读到配置项的内容,例如:数据库可以正常连接等;说明与配置中心对接成功。