Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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 在属性文件中重放占位符_Java_Spring_Properties File - Fatal编程技术网

Java 在属性文件中重放占位符

Java 在属性文件中重放占位符,java,spring,properties-file,Java,Spring,Properties File,我有一个属性文件,我想在其中修改某些属性以包含用户ID(可能还有其他运行时加载的值),如下所示 emailer.queuename=Emailer.${user} …因此,在本例中,当读入时,属性值可能会变成,Emailer.SMITHJ 我想扩展属性类并重写getProperty方法,但我还需要确保Spring在为上下文使用PropertyPlaceHolderConfigure时会相应地修改属性(我知道我可以在这个类中重写convertPropertyValue) 但是有没有一种方法可以让

我有一个属性文件,我想在其中修改某些属性以包含用户ID(可能还有其他运行时加载的值),如下所示

emailer.queuename=Emailer.${user}
…因此,在本例中,当读入时,属性值可能会变成,
Emailer.SMITHJ

我想扩展
属性
类并重写
getProperty方法
,但我还需要确保Spring在为上下文使用
PropertyPlaceHolderConfigure
时会相应地修改属性(我知道我可以在这个类中重写
convertPropertyValue

但是有没有一种方法可以让我同时做到这两个呢

谢谢

==================================

更新:


在我的例子中,我发现了一个简单的解决方案,就是只使用系统属性(例如${user.name}),因为
PropertyPlaceHolderConfigure
类的
systemPropertiesMode
设置为
fallback
Spring会自动排序。但是,对于直接使用属性文件的情况,我仍然需要创建一个继承类,或者只是将值注入到它所使用的类中。

如果我理解正确,您希望在属性文件中的某些属性用于解析bean配置中的属性之前替换它们

正如您所说,bean属性由
propertyplaceholderconfigure
解析,后者是
BeanFactoryPostProcessor
。要执行前期处理,您还需要一个
BeanFactoryPostProcessor
,并实现
Ordered
接口以指定其运行时间

或者,如果以编程方式注册
BeanFactoryPostProcessor
s,它们将按照注册的顺序执行,然后再通过其他方式注册任何其他bean