我所看到的使用PropertyPlaceHolderConfigurer的所有示例似乎都在设置简单的值,如字符串和整数。
如何使用PPC设置类的值。
E.g。如果我有班级签名Source(String name, DistributionSample batch, DistributionSample delay)
我如何设置批处理和延迟属性。
还有一个小问题。 DistributionSample是一个抽象类。好的一面是,使用propertyPlaceHolder的类知道需要实例化的“Solid”类的beanName。
非常感谢任何帮助。
答案 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。
感谢所有的提示和技巧。