子应用程序中的application.properties文件不会覆盖主应用程序中的application.properties文件

时间:2019-02-23 18:49:45

标签: java spring spring-boot spring-mvc

我是Spring Boot的新手,我感到困惑,当Spring应用程序中的所有属性源(例如application.properties,my.properties,application- {profile} .properties)进入环境时,为什么不这样做呢?获得覆盖。如果在两个不同的属性文件中有一些公用密钥。

例如,如果我创建一个子项目并在其中包含一个application.properties并具有吸引力,则说“ name = child”并创建该项目的jar,并将此jar添加到我的主项目中,并且主项目中也有一个具有相同密钥但值不同的application.properties文件,可以说 '名字=父母' 如果我在春季使用Envionment类并获取env.getProperty(key),那么它将显示父级。 对我来说,它应该是“子代”,因为如果所有属性都移到同一位置,那么就不会存在两个具有不同值的相同键。

我也对属性文件的排序感到困惑。这是否意味着如果它在第一个文件中获得属性,那么就不会在第二个文件中搜索该属性?

1 个答案:

答案 0 :(得分:1)

Spring Boot有一个评估所有属性源的命令。它们在此处列出:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

因此,基本上,Spring知道它需要获取的所有属性。然后它将评估从何处获得它们。对于您而言,它将首先评估您的{profile} .properties文件。如果找不到所需的内容,它将进入常规的application.properties。因此,如果您希望自己的application.properties值覆盖{profile},那么就不会了。