属性文件中可替换的占位符

3

我有一个属性文件,想修改某些属性以包含用户ID(和可能的其他运行时加载的值),类似于以下内容...

emailer.queuename=Emailer.${user}

在读取时,属性值可能变为Emailer.SMITHJ,我考虑将Properties类扩展并覆盖getProperty方法,但我还需要确保在使用PropertyPlaceholderConfigurer的情况下Spring会相应地修改属性(我发现我可以在此类中覆盖convertPropertyValue)。

但是否有一种简洁的方法可以同时实现这两个目标?

谢谢

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

更新:

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

1个回答

0

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

正如您所说,bean属性是由PropertyPlaceholderConfigurer解析的,它是一个BeanFactoryPostProcessor。为了进行前期处理,您还需要实现Ordered接口来指定该处理器何时运行。

另外,如果您以编程方式注册BeanFactoryPostProcessor,它们将按注册顺序执行,并优先于通过其他方式注册的任何其他bean。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接