2010-03-01 45 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當你想覆蓋特定豆,其組裝你沒有的控件的屬性。