Spring-Boot的配置载入
公司使用了动态从远程文件中读取Properties文件的中间件,一般是没啥问题,但整合Spring-Boot后,远程端Properties的读取与初始化在Bean初始化之后,这就导致启动时读取不到配置的错误。需要修改框架,使Bean初始化之前就把远程文件中的Properties读取进来。
这里需要写工具类实现ApplicationContextInitializer<ConfigurableApplicationContext>接口,并实现initialize(ConfigurableApplicationContext applicationContext)方法,Spring-Boot在Bean初始化之前会调用initialize方法。那我们所需做的就是在initialize方法中,先拉取远程文件中的Properties,并把它放入Spring容器的PropertySources中。
首先在resoures/META-INF目录下新建文件spring.factories,文件内容:
org.springframework.context.ApplicationContextInitializer=com.github.xydonne.MyConfigurationApplicationContextInitializer
再新建类
public class MyConfigurationApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
//此处的Properties为需要获取的Properties配置
Properties myProperties = getProperties();
PropertiesPropertySource propertySource = new PropertiesPropertySource("myProperties", myProperties);
applicationContext.getEnvironment().getPropertySources().addFirst(propertySource);
}
}
转载注明出处,我就不和你计较。
by Donney Young
http://www.jianshu.com/p/37b4568724c9