我可以为弹簧提供自己的可变插补器吗?

时间:2012-08-16 10:43:10

标签: java spring configuration apache-commons-config

我已经了解到我可以为Spring提供<context:property-placeholder>元素,它似乎使用PropertyPlaceholderConfigurer来对属性文件插入变量(即替换${foo}之类的标记)。

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

1 个答案:

答案 0 :(得分:1)

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

在Spring 3.1中,您可以直接从公共配置对象中提取值,方法是创建自己的PropertySource实现,并将其注册到应用程序上下文,通常使用ApplicationContextInitializerThis blog post提供了对该过程的良好概述。 Spring 3.1中的<context:property-placeholder>将从已注册的PropertySources以及您指定的任何属性文件中提取值。