【问题标题】:application.properties file from child application not override application.properties file in main application来自子应用程序的 application.properties 文件不会覆盖主应用程序中的 application.properties 文件
【发布时间】:2019-07-17 14:26:11
【问题描述】:

我是 Spring Boot 新手,我有一个困惑,当 Spring 应用程序中的所有属性源(如 application.properties 、 my.properties、application-{profile}.properties )进入环境时,他们为什么不获得覆盖。如果两个不同的属性文件中有一些公共键。

例如,如果我创建一个子项目并在其中有一个 application.properties 并具有属性,请说“name=child”并创建该项目的 jar 并将此 jar 添加到我的主项目中,并且主项目也有一个具有相同键但值不同的 application.properties 文件,比如说 '名字=父母' 如果我在春天使用 Envionment 类并获得 env.getProperty(key) 那么它显示父级。 对我来说,它应该是“孩子”,因为如果所有属性都去同一个地方,那么两个具有不同值的相同键就不能存在。

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

【问题讨论】:

    标签: java spring spring-boot spring-mvc


    【解决方案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} 值,则不会。

    【讨论】:

    • 感谢@Hermann 的回复,我同意你所说的。但我的问题是,如果我们在主项目中有 application.properties,在另一个项目中有 application.properties,该项目作为 jar 包含在主项目中,并且两个项目中有不同值的公共键。当我将打印该键的值时。那么它将打印哪个值。主项目或子项目的价值。??
    猜你喜欢
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 2017-09-06
    • 1970-01-01
    • 2014-12-16
    相关资源
    最近更新 更多