我已经了解到我可以为Spring提供<context:property-placeholder>
元素,它似乎使用PropertyPlaceholderConfigurer来对属性文件插入变量(即替换${foo}
之类的标记)。
有没有办法自定义用于解析令牌的类?特别是,我非常希望使用Apache Commons Config Configuration
对象来提供标记的值,而不是使用属性文件。
答案 0 :(得分:1)
是,子类PropertyPlaceholderConfigurer
并覆盖loadProperties
方法。此方法传递一个Properties
对象,您可以根据需要填充值。或者,您可以定义PropertiesPersister
的替代实现,并将其插入普通PropertyPlaceholderConfigurer
。
在Spring 3.1中,您可以直接从公共配置对象中提取值,方法是创建自己的PropertySource
实现,并将其注册到应用程序上下文,通常使用ApplicationContextInitializer
。 This blog post提供了对该过程的良好概述。 Spring 3.1中的<context:property-placeholder>
将从已注册的PropertySources
以及您指定的任何属性文件中提取值。