Apollo使用
Apollo支持许多语言
本文举例Springboot整合apollo配置中心的使用
SpringBoot整合Apollo配置中心
1. pom.xml加入apollo依赖
1 | <!-- apollo --> |
2. 修改配置文件
1 | # apollo项目名 |
3. 启动时指定使用的apollo环境
虚拟机参数:
-Denv=YOUR-ENVIRONMENT
or
指定启动环境:
profiles:
active: dev
4. 配置的获取
1). 配置文件直接注入(Spring Placeholder)1
2
3
4
5
6
7
8
public class ApolloDemoConfig {
// st为默认值, 避免没有key的情况
"${name:st}") (
private String name;
}
使用时:1
2
ApolloDemoConfig apolloDemoConfig;
如果注入的参数运行时动态更新,可增加如下配置:1
2apollo:
autoUpdateInjectedSpringProperties: false
2). 使用ConfigurationProperties注入1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
"redis.cache") (prefix =
public class SampleRedisConfig {
private int expireSeconds;
private int commandTimeout;
public void setExpireSeconds(int expireSeconds) {
this.expireSeconds = expireSeconds;
}
public void setCommandTimeout(int commandTimeout) {
this.commandTimeout = commandTimeout;
}
public int getExpireSeconds() {
return expireSeconds;
}
public int getCommandTimeout() {
return commandTimeout;
}
}
注: @ConfigurationProperties如果需要在Apollo配置变化时自动更新注入的值,需要配合使用EnvironmentChangeEvent或RefreshScope
3). @ApolloConfig注解的使用1
2
3
4
5
6
7
8
9
10
11
private Config config;
"/index3") (
public String hello3(){
Set <String> propertyNames = config.getPropertyNames();
propertyNames.forEach(key -> {
System.err.println(key+"="+config.getIntProperty(key,0));
});
return propertyNames.toString();
}
其他还有一些Apollo的注解
- @ApolloConfigChangeListener用来自动注册ConfigChangeListener
- @ApolloJsonValue用来把配置的json字符串自动注入为对象