我使用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。并且在计算每个使用的文件的路径时。所以重写必须只是属性 - 而不是变量。
答案 0 :(得分:2)
我想做的是让log.dir
变量更改值,因为配置器会逐步执行属性文件并遇到覆盖的定义。
问题是,PropertyPlaceholderConfigurer
不能这样做;对于每个遇到的${placeholder}
定义,它仅检查获胜重新定义。它确实解决了占位符,并考虑了它们所定义的文件的上下文。
我只看到一个可行的解决方案:在每个文件中使用不同的变量名称。编写自己的占位符配置器可能是非常差的增益与工作负载比率。