Java,Spring在属性文件中使用变量的最佳实践

时间:2011-09-30 14:25:14

标签: java spring file ant properties

我使用org.springframework.beans.factory.config.PropertyPlaceholderConfigurer。 有3个属性文件。因此,如果属性重复 - 最后获胜。

第一个文件包含所有属性,其他文件替换某些属性。 我使用例如变量如

log.dir=c:/log.

所以我可以替换像

这样的属性中的部分路径
${log.dir}/app1.log

在第一个文件中,我有48次使用此变量。

在第二个文件中,我有25个替换第一个文件的属性,5个替换第三个文件。

我需要在第二和第三个文件中重新定义此变量的问题!

我想使用相同的名称

log.dir

但是如果我在第二个或第三个文件中定义它 - 重新定义回到第一个文件 - 但我需要用于其余的18(48 -25 - 5 = 18)旧属性。 类似案例中的最佳做法是什么? 谢谢。 经过一些分析后,我希望在所有属性文件中都有一个具有相同名称的变量,但不能覆盖值。因此对于第一个文件log.dir = c:\ log,对于第二个log.dir = d:\ log,对于第三个log.dir = e:\ log。并且在计算每个使用的文件的路径时。所以重写必须只是属性 - 而不是变量。

1 个答案:

答案 0 :(得分:2)

我想做的是让log.dir变量更改值,因为配置器会逐步执行属性文件并遇到覆盖的定义。

问题是,PropertyPlaceholderConfigurer不能这样做;对于每个遇到的${placeholder}定义,它仅检查获胜重新定义。它确实解决了占位符,并考虑了它们所定义的文件的上下文。

我只看到一个可行的解决方案:在每个文件中使用不同的变量名称。编写自己的占位符配置器可能是非常差的增益与工作负载比率。