Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java、Spring在属性文件中使用变量的最佳实践_Java_Spring_File_Ant_Properties - Fatal编程技术网

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

Java、Spring在属性文件中使用变量的最佳实践,java,spring,file,ant,properties,Java,Spring,File,Ant,Properties,我使用org.springframework.beans.factory.config.propertyplaceholderconfigure。 有3个属性文件。因此,如果属性重复-最后一次获胜 第一个文件包含所有属性,其他文件替换一些属性。 例如,我使用变量like log.dir=c:/log. 所以我可以在属性中替换路径的一部分,比如 ${log.dir}/app1.log 在第一个文件中,我有48次使用这个变量 在第二个文件中,第一个文件中的属性有25个替换项,第三个文件中有5个替

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

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

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。以及计算每个使用的文件的路径时。因此,重写的必须是属性,而不是变量。

您(我认为)要做的是,在配置程序逐步遍历属性文件并遇到重写定义时,使
log.dir
变量更改值

问题是,
PropertyPlaceHolderConfigure
不能以这种方式工作;对于遇到的每个
${placeholder}
定义,它只检查获胜的重新定义。它会根据文件的上下文来解析占位符


我只看到一个可行的解决方案:在每个文件中使用不同的变量名。编写自己的占位符配置程序可能会导致很低的工作负载增益比。

我甚至不知道你说了什么。在任何情况下,您都可能需要考虑编写一个定制的占位符配置器,尽管听起来您滥用了这个想法。