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

时间:2013-11-04 12:34:18

标签: java spring properties-file

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

emailer.queuename=Emailer.${user}

...因此,在此示例中,属性值可能会在读入时变为Emailer.SMITHJ

我考虑扩展Properties类并覆盖getProperty method,但我还需要确保在将PropertyPlaceholderConfigurer用于上下文时Spring会相应地修改属性(我看到我可以覆盖此类中的convertPropertyValue)。

但是我有两种方式可以实现这两种方式吗?

由于

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

更新:

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

1 个答案:

答案 0 :(得分:0)

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

正如您所说,bean属性由PropertyPlaceholderConfigurer解析,BeanFactoryPostProcessor。要执行前期处理,您还需要BeanFactoryPostProcessor并实现Ordered接口以指定它何时运行。

或者,如果您以编程方式注册BeanFactoryPostProcessor,它们将按照注册的顺序执行,并在通过其他方式注册任何其他bean之前执行。