springBoot(cloud)读取配置文件的先后顺序

10 篇文章 2 订阅
1 篇文章 0 订阅

springBoot读取配置文件的先后顺序

     1.在命令行传入的参数

     2.spring_application_json中的属性。spring_application_json是以json格式配置在系统环境变量中的内容。

     3.java:comp/env中的JNDI属性。

     4.java的系统属性,可以通过System.getProperties()获得的内容。

     5.操作系统的环境变量。

     6.通过random.*配置的随机属性。

     7.位于当前应用ar包之外,正对不同{profile}环境的配置文件内容,例如application-{profile}.properties或者yaml定义的配置文件。

     8.位于当前应用jar包之内,针对不同{perofile}环境的配置文件内容,例如application-{profile}。properties或者是yaml定义的文件。

     9.位于当前应用jar包之外的application-properties和yaml配置的文件。

     10.位于当前应用jar包之内的application-properties和yaml配置的文件。

     11.在@Configuration注解修改的类中,通过@PropertySource注解定义的属性。

     12.应用默认属性,使用SpringApplication.setDefaultProperties定义的内容。

优先级按上面的顺序由由低到高,数字越小优先级越大

可以看到,其中第7项和第9项都是从应用jar包之外读取配置文件,所以,实现外部化配置的原理就是从此切入,为其指定外部配置文件的加载位置来取代jar包之内的配置容器。通过这样的实现,我们的工程在配置中就变得非常干净,只需要在本地放置开发需要的配置即可,而不用关心其他环境的配置,尤其对应环境的负责人去维护即可。

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服务器来管理配置信息,以提高整个应用的可维护性和可扩展性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值