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