2010-03-01 39 views
1

我看到的使用PropertyPlaceHolderConfigurer的所有示例似乎都设置了简单的值,如字符串和整数。Spring:PropertyPlaceHolderConfigurer设置非字符串/整数属性的值

你如何使用PPC来设置类的值。

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

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

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

任何帮助将不胜感激。

回答

0

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

蓖麻与春天融为一体,所以豆子可以从Castor marshallers实例化。

感谢所有的提示和提示家伙。

0

正如你所说,PropertyPlaceHolderConfigurer只适用于字符串值,其中字符串可以转换为目标类型。所以你可以告诉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}/> 
+0

我认为这样做,但接下来的问题是给它的批/延迟豆类的参数。 I.e.在源bean中可以有,其中beanName将被解析为我想要使用的示例,例如, “二郎”。然后有一个bean 我可以在那里提供该bean的k值我的属性文件也是如此。 – Babyangle86 2010-03-02 07:01:38

+0

虽然看着转换器。唯一的问题是我目前正在使用Spring 2.5。与flex和blazeds。我很厌烦打破事情,因为它几乎不是一个简单的更换罐子的情况.... – Babyangle86 2010-03-02 07:19:46

+0

@ babyangel86:机制是不同的是春季2.5.6,但仍然有效:http://static.springsource.org/spring /docs/2.5.6/reference/validation.html#beans-beans-conversion-customeditor-registration – skaffman 2010-03-02 08:15:25

0

看一看的PropertyOverrideConfigurer当你想覆盖特定豆,其组装你没有的控件的属性。