Java 我可以为spring提供自己的变量插值器吗?

Java 我可以为spring提供自己的变量插值器吗?,java,spring,configuration,apache-commons-config,Java,Spring,Configuration,Apache Commons Config,我已经了解到,我可以为Spring提供一个元素,该元素似乎使用一个属性文件来插值变量(即替换像${foo}这样的标记) 有没有办法自定义用于解析令牌的类?特别是,我非常希望使用对象来提供令牌的值,而不是使用属性文件。是的,子类PropertyPlaceHolderConfigure并重写loadProperties方法。此方法传递一个Properties对象,您可以根据需要用值填充该对象。或者,您可以定义PropertiesPersister的替代实现,并将其插入普通PropertyPlaceH

我已经了解到,我可以为Spring提供一个
元素,该元素似乎使用一个属性文件来插值变量(即替换像
${foo}
这样的标记)


有没有办法自定义用于解析令牌的类?特别是,我非常希望使用对象来提供令牌的值,而不是使用属性文件。

是的,子类
PropertyPlaceHolderConfigure
并重写
loadProperties
方法。此方法传递一个
Properties
对象,您可以根据需要用值填充该对象。或者,您可以定义
PropertiesPersister
的替代实现,并将其插入普通
PropertyPlaceHolderConfigure


在Spring 3.1中,您可以通过创建自己的
PropertySource
实现,并将其注册到应用程序上下文中(通常使用
ApplicationContextInitializer
),直接从commons配置对象中提取值。提供了流程的良好概述<代码>在Spring 3.1中,将从注册的
属性资源以及您指定的任何属性文件中提取值。

看起来很有希望,但是javadoc没有真正解释如何使用它,并且在中没有提到。然后对这个类做什么?大概我必须以某种方式告诉我的spring配置。是否有非基于对象的实现?Commons
配置
接口不是
属性
的子类-我可能必须对属性进行子类化,以便包装配置。在Spring 3.1中,是的,我编辑了我的答案,并链接到一篇有用的博客文章。第一部分非常有用,因为我正在编写一个独立的应用程序。但是它没有提到(尽管@Ian提到!)您需要添加
才能让它工作!