Spring-Cloud专题(三)Spring-Boot的配置载入

Spring-Boot的配置载入

公司使用了动态从远程文件中读取Properties文件的中间件,一般是没啥问题,但整合Spring-Boot后,远程端Properties的读取与初始化在Bean初始化之后,这就导致启动时读取不到配置的错误。需要修改框架,使Bean初始化之前就把远程文件中的Properties读取进来。

这里需要写工具类实现ApplicationContextInitializer接口,并实现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 {

    @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

你可能感兴趣的:(Spring-Cloud专题(三)Spring-Boot的配置载入)