SpringBoot 动态管理配置文件扩展接口EnvironmentPostProcessor
- 编写EnvironmentPostProcessor实现类
@Component
public class MyEnvironmentPostProcessor implements EnvironmentPostProcessor {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
try{
Properties properties = new Properties();
properties.put("dynamic-name", "Trump");
properties.put("dynamic-gender", "male");
properties.put("dynamic-birth", "1946年6月14日");
PropertiesPropertySource propertiesPropertySource = new PropertiesPropertySource("myDynamicConfig",properties);
environment.getPropertySources().addLast(propertiesPropertySource);
}catch (Exception e){
e.printStackTrace();
logger.error(e.getMessage());
}
}
}
- 添加spring.factories文件
- 在
classpath
下新建文件META-INF/spring.factories
- 在文件中添加如下配置:
org.springframework.boot.env.EnvironmentPostProcessor=你的package.MyEnvironmentPostProcessor
- 在
配置中心
PropertiesPropertySource可以使用数据库,缓存数据库(redis),zookeeper等组件。
如果配置实时生效
,目前可行的方案可以使用redis的消息订阅发布模式,zookeeper(监听节点变化、数据变化)等。
连接池配置实时变化 — ??