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

标签 java spring properties-file

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

emailer.queuename=Emailer.${user}

...在本例中,属性值可能变为 Emailer.SMITHJ当读入时。

我想延长 Properties类并覆盖 getProperty method ,但我还需要确保 Spring 在使用 PropertyPlaceholderConfigurer 时会相应地修改属性对于上下文(我发现我可以在此类中覆盖convertPropertyValue)。

但是有没有一种巧妙的方法可以同时实现这两个目标?

谢谢

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

更新:

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

最佳答案

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

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

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

关于java - 属性文件中的可替换占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19767821/

相关文章:

java - getResources() 返回 null

java - 在 linux 中查找路径条目

java - 存储库到服务的依赖关系未得到满足

java - 在 hql 中使用 select * 但获取值的地址

java - JDBC:如何使用属性文件中的详细信息从 Jdbc 连接到 RAC 数据库?

java - 整数数组的交替元素之和

java - Maven阴影插件: Cannot create instance of

java - Spring 运行的单元测试作为组失败,但单独通过

jquery - 在Grails中使用jquery.i18n.properties.js

java - 使用 Spring 从属性文件加载嵌套占位符