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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容