我有一个属性文件,我想在其中修改某些属性以包含用户ID(可能还有其他运行时加载的值),如下所示......
emailer.queuename=Emailer.${user}
...因此,在此示例中,属性值可能会在读入时变为Emailer.SMITHJ
。
我考虑扩展Properties
类并覆盖getProperty method
,但我还需要确保在将PropertyPlaceholderConfigurer
用于上下文时Spring会相应地修改属性(我看到我可以覆盖此类中的convertPropertyValue
)。
但是我有两种方式可以实现这两种方式吗?
由于
==================================
更新:
我发现的 my 案例中的简单解决方案只是使用系统属性(例如$ {user.name}),而systemPropertiesMode
用于PropertyPlaceholderConfigurer
} class设置为fallback
Spring将自动排序。但是,我仍然需要为我直接使用属性文件的情况创建一个继承类,或者只是将值注入它所使用的类中。
答案 0 :(得分:0)
如果我理解正确,您希望在用于解析bean配置中的属性之前替换属性文件中的某些属性。
正如您所说,bean属性由PropertyPlaceholderConfigurer
解析,BeanFactoryPostProcessor
。要执行前期处理,您还需要BeanFactoryPostProcessor
并实现Ordered
接口以指定它何时运行。
或者,如果您以编程方式注册BeanFactoryPostProcessor
,它们将按照注册的顺序执行,并在通过其他方式注册任何其他bean之前执行。