微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – Spring – “context:property-placeholder” – 属性优先级

我有一个由许多应用程序组成的项目.
我在我的一个应用程序中有这个.

<上下文:属性占位符
      location =“file:/config/p1.properties,file:/config/p2.properties”/>

现在,我想在p2.properties中定义一个已存在于p1.properties中的属性.那就是我想在p2中基本覆盖该属性(给它一个不同的值).这是因为在运行时p1在许多应用程序之间共享,而p2仅由我的应用程序使用.所以我不想影响所有应用程序,只是我的应用程序.

1)我想知道我将在p2中定义的属性值是否优先.
2)位置的顺序是否重要,如果是,则第二个
优先于第一个

最佳答案
您配置property-placeholder的方式,p2.properties中的任何属性将优先于p1.properties中的属性.

这是因为最后一个文件中的属性始终优先.

您设置的是SysAdmins或DevOps人员覆盖应用程序属性的标准方法.例如,您可以将第一个文件作为类路径属性文件,而第二个文件可能就像您拥有它一样,这是一个基于文件系统的属性文件,其值覆盖第一个文件系统中的值.

如果检查JavaDoc的PropertiesLoaderSupport(它处理资源的加载并且是一个由PropertySourcesPlaceholderConfigurer扩展的抽象类),你会看到在setLocations方法中它有以下注释

Note: Properties defined in later files will override properties
defined earlier files,in case of overlapping keys. Hence,make sure
that the most specific files are the last ones in the given list of
locations.

原文地址:https://www.jb51.cc/spring/431994.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐