Spring PlaceHolder使用注意事项
本文可转载演绎,但需要注明原作者和本文链接。
文章目录
对Spring Property Placeholder如何使用,以及使用过程中遇到的问题做了简单的描述。
Spring Property Placeholder
1. 使用指南
主要是Spring从Properties文件中读取property信息。
properties文件的使用要求如下:
- 除非不可拒因素,properties文件必须放在项目部署的模块中(一般都为maven工程中的war模块)。
- 必须使用自己项目中的properties。不能引用别人jar包中的properties文件,如果需要,在工程中定义一份。
- 文件的命名方式为项目名称.模块名称.用途名称.properties。比如:
- hrs.common.data.rpc.war.jdbc.properties.
- 测试环境中的在第3条基础上,在文件的签名加test.前缀即可。
2. Spring定义
2.1 PlaceHolder定义
PropertyPlaceholder的定义如下
|
|
2.1 Spring定义注意事项
在使用PropertyPlaceholderConfigurer的时候需要防止防止各种覆盖问题。
- bean的id属性必须不同,取得名称要有意义。比如使用项目名称+模块名称+用途名称+Ppc。比如
- hrscDataJdbcPpc
- properties中的属性不能覆盖,如果有覆盖,Spring会按照以下规则取值。
- 同个bean,最后定义的location中的property为最终结果。如2.1示例中,Bean-ppc1的三个location,分别定义了key相同但value不同的property,其中p.1.properties:num=1、p.2.properties:num=2、p.3.properties:num=3,最终获取num的值为3。
- 不同bean,最现加载的为最终结果(加载顺序依次为 order属性值> bean声明顺序 )。如2.1示例中,如果Bean-ppc1:name=1、Bean-ppc2:name=2,则最终获取name的值为2,因为Bean-ppc1的order属性小于Bean-ppc2的order属性。如2.1示例中,如果Bean-ppc1:hello=Tom、Bean-ppc3:hello=Jerry,则最终获取hello的值为Tom,因为纵然两个Bean的order相同,但Bean-ppc1的定义早于Bean-ppc3。
- 如果spring配置文件中有使用import标签,
3. 完整代码
p.1.properties
|
|
p.2.properties
|
|
p.3.properties
|
|
p.4.properties
|
|
p.5.properties
|
|
spring-property.xml
|
|
SpringPropertyPlaceholderSample.java
|
|
程序运行输出如下12332Tom