Spring:PropertyPlaceHolderConfigurer为非字符串/整数属性设置值

时间:2010-03-01 16:54:44

标签: java spring properties

我所看到的使用PropertyPlaceHolderConfigurer的所有示例似乎都在设置简单的值,如字符串和整数。

如何使用PPC设置类的值。

E.g。如果我有班级签名Source(String name, DistributionSample batch, DistributionSample delay)

我如何设置批处理和延迟属性。

还有一个小问题。 DistributionSample是一个抽象类。好的一面是,使用propertyPlaceHolder的类知道需要实例化的“Solid”类的beanName。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

正如您所说,PropertyPlaceHolderConfigurer仅适用于String可以转换为目标类型的String值。

所以你可以告诉Spring如何将convert a String转换为DistributionSample个对象,或者你可以使用属性占位符来引用bean名称,例如。

<bean class="Source">
   <constructor-arg value="source name"/>
   <constructor-arg ref="${batch.beanName}"/>
   <constructor-arg ref="${delay.beanName}"/>
</bean>

<bean id="batch" class="....."/>
<bean id="delay" class="....."/>

如果您的属性文件包含

batch.beanName = batch
delay.beanName = delay

然后将解析bean引用。您也可以对bean类使用属性占位符语法,如果这对您有用:

<bean id="sample" class="${batch.classname}/>

答案 1 :(得分:0)

如果要覆盖无法控制其组装的特定bean的属性,请查看PropertyOverrideConfigurer。

答案 2 :(得分:0)

最后,使用Castor将XML映射到java对象更有意义。

Castor与spring集成,因此可以从Castor marshallers实例化bean。

感谢所有的提示和技巧。