2010-10-23 64 views
2
class SomeoneElsesAPI { 
    void setDirectory(File dir){...} 
    void setDirectory(String dir){...} 
} 

<bean id="someoneElsesAPI" class="com.someone.SomeoneElsesAPI"> 
    <property name="directory"> 
     <value type="java.lang.String">/etc</value> 
    </property> 
</bean> 

我有一個與上例類似的情況,Spring拋出一個IllegalStateException,表示它無法將String轉換爲File。Spring 3如何在setter方法過載時設置屬性

如何判斷彈簧使用哪種重載方法?當我在<value type="...">參數中指定它時,我認爲spring會計算出來。

回答

3

我不知道這是否令人滿意的答案,但我避免了重載屬性設置器,我希望能夠使用IoC進行連線。當我確實需要兩個setter(邏輯上)相同的屬性時,我使用不同的setter名稱...和javadoc註釋來解釋發生了什麼。

+0

同意,但這段代碼是在Jetty的第三方應用程序,我發佈了一個錯誤報告,要求他們這樣做,但我不控制他們的代碼。我正在考慮使用Java Config來解決這個問題。 – 2010-10-23 05:57:45

+1

創建隱藏重載setter的包裝類。 – 2010-10-23 07:52:56