spring boot程序启动时读取覆盖配置文件中的变量
1. 自定义ApplicationContextInitializer,spring启动时会执行自定义的initialize方法
new SpringApplicationBuilder(DsgCoreApplication.class).
initializers(new MyPropertyInitializer()).
run(args);
@Slf4j
public class MyPropertyInitializer implements ApplicationContextInitializer {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
}
}
2. 读取变量
ConfigurableEnvironment environment = applicationContext.getEnvironment();
String etcdUrl = environment.getProperty("etcd.etcd-urls");
3. 覆盖变量
Map<String, Object> map = new HashMap<>();
map.put("nats.nats-urls", natsAddress);
environment.getPropertySources().addFirst(new MapPropertySource("manualProps", map));