[英]Precedence of properties: system vs. deployment descriptor vs. properties file
如果我有系统属性,我通过我的容器(例如Tomcat),如下所示:
-Dmy.property=myValueOne
和我的web.xml中定义的具有相同键的属性:
<context-param>
<param-name>my.property</param-name>
<param-value>myValueTwo</param-value>
</context-param>
...以及在我的一个config * .properties文件中定义了相同键的属性:
my.property=myValueThree
这个房产有哪些价值? myValueOne
, myValueTwo
或myValueThree
?
如果你有几个具有相同键的属性,是否有一个层次结构来定义哪种属性覆盖哪种其他属性?
简单地说,这三个都可用,您可以使用SpEL获取每个值。
#{systemProperties['my.property']} // myValueOne
#{servletContextInitParams['my.property'] // myValueTwo
属性取决于你如何加载它们( @PropertySource
或`
但是,您可能想知道如果使用占位符会发生什么,并且您有自己的情况。
<property name="myProperty" value="${my.property}" />
假设您使用默认值(并且在Spring 3.1或更高版本上),则在基于Web的环境中按顺序查询以下资源。
所以在你的情况下, ${my.property}
将解析为myValueThree 。 也就是说,如果保留默认值。 如果指定local-override="true"
,则最后查询属性文件,值为myValueTwo 。
链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.