我使用的是org.springframework.beans.factory.config.PropertyPlaceholderConfigurer。有3个属性文件。所以如果属性重复- last胜出
第一个文件包含所有属性,其他文件替换一些属性。例如,我使用像
这样的变量log.dir=c:/log.
所以我可以把path的一部分替换成属性,比如
${log.dir}/app1.log
在第一个文件中,我使用了48次这个变量。
在第二个文件中,我有25个替代第一个文件中的属性,在第三个文件中有5个替代。
的问题,我需要重新定义这个变量也在第二个和第三个文件!
我想使用相同的名称
log.dir
但是如果我在第二个或第三个文件中定义它-重新定义回到第一个文件-但是我需要使用其余的18(48 -25 - 5=18)个旧属性。类似情况下的最佳实践是什么?谢谢。经过一些分析,我希望在所有属性文件中具有相同名称的变量,但值不能被覆盖。对于第一个文件日志。Dir =c:log,用于第二个日志。Dir =d:log,对于第三个log. Dir =e:log。并且在计算每个文件的路径时使用自己的。
(我认为)您想要做的是使log.dir
变量在配置器步骤通过属性文件并遇到您的覆盖定义时改变值。
问题是,PropertyPlaceholderConfigurer
不是这样工作的;对于每个遇到的${placeholder}
定义,它只检查获胜的重定义。它会根据定义占位符的文件的上下文来解析占位符。
我只看到一个可行的解决方案:在每个文件中使用不同的变量名。编写自己的占位符配置器可能是非常糟糕的增益-工作负载比。