美文网首页
Spring-Cloud专题(三)Spring-Boot的配置载

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

作者: DonneyYoung | 来源:发表于2017-02-10 18:06 被阅读252次

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

相关文章

网友评论

      本文标题:Spring-Cloud专题(三)Spring-Boot的配置载

      本文链接:https://www.haomeiwen.com/subject/lsfnittx.html