springboot下配置文件统一加载、管理

springboot 就不必多说了吧,这货结合dubbo/thrift做微服务棒棒的. 笔者现在做的这个项目就是基于springboot的一堆服务,大约几十个吧. springboot的配置都在application.propertie里,尽管已经约束好了里面的配置,但还有诸多不便性,所以需要一个统一加载机制,来加载公共配置和个性化配置.

springCloud是有这么一套来着.本文就是参考的org.springframework.boot.cloud.CloudFoundryVcapEnvironmentPostProcessor 不过找着这个类也是扒拉了好久源代码.

好了,啰嗦了这么多,开始贴代码了.

public class LoadThirdEnv implements EnvironmentPostProcessor, Ordered {
    @Override
    public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
        //此处可以http方式 到配置服务器拉取一堆公共配置+本项目个性配置的json串,拼到Properties里
        //......省略new Properties的过程
       MutablePropertySources propertySources = environment.getPropertySources();
       //addLast 结合下面的 getOrder() 保证顺序 读者也可以试试其他姿势的加载顺序
        propertySources.addLast(new PropertiesPropertySource("thirdEnv", properties));
    }
    @Override
    public int getOrder() {
        //  +1 保证application.propertie里的内容能覆盖掉本配置文件中默认的
        // 如果不想被覆盖 可以去掉 +1  或者 -1  试试
        return ConfigFileApplicationListener.DEFAULT_ORDER + 1;
    }
}

对,没错,就是这么几行. 还不够,还需要在resources/META-INF/spring.factories里添加

org.springframework.boot.env.EnvironmentPostProcessor=\
 com.ilaotan.LoadThirdEnv

好了,完工. springboot的配置文件参数,可以精简到几个. 其他都从http加载.以后需要改参数,直接配置平台改完,重启这个springboot服务即可.

spring.factories 是springboot的一种加载机制.这里不多赘述.

至于http请求的配置平台,实现得很简单,就是发不同的参数,那边返回json串.

转载于:https://my.oschina.net/ilaotan/blog/846456

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一种非常流行的Java开发框架,它提供了一种方便的方式来管理应用程序的配置文件。在Spring Boot应用程序中,通常会使用application.properties或者application.yml来存储配置信息。但是,在复杂的应用中,可能存在多个模块,每个模块都需要自己的配置文件。在这种情况下,如何跨模块读取配置文件? 首先,需要明确的是,在Spring Boot中,配置文件的读取是通过Spring的Environment接口来实现的。我们可以通过Environment对象来获取配置文件中定义的属性。因此,如果要跨模块读取配置文件,就需要在不同的模块中都能够访问到Environment对象。 解决这个问题的一个简单方法是,使用Spring Boot提供的@PropertySource注解。这个注解可以将指定的配置文件加载到Environment对象中。因此,我们只需要在每个模块中都添加一个与其他模块不同的配置文件,并在每个模块中使用@PropertySource注解来加载自己的配置文件,就可以实现跨模块读取配置文件的目的。 另外,Spring Boot还提供了一种更加高级的方式来管理配置文件,即使用Spring Cloud Config服务器。通过使用这种方式,在不同的模块中都可以通过统一的Config服务器来读取配置信息,避免了多个配置文件的冗杂。不过,这种方式需要额外的配置工作,适用于更加复杂的应用场景。 综上所述,跨模块读取配置文件可以通过在每个模块中使用@PropertySource注解来实现。同时,也可以考虑使用Spring Cloud Config服务器来管理配置信息,以提高整个应用的可维护性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值