2011-01-25 107 views
5

在我正在使用的一個項目中,使用Spring的時候,我看到一些令我頭腦發熱的東西。顯然,有需要豆類工作單元測試和那些豆都是從XML文件創建,包含類似的事情:Java:在XML中定義bean是否是一種好的做法?

<bean class="...ListDTO"> 
<constructor-arg> 
    <map> 
    <entry key="use1key"> 
    <value>use1value</value> 
    </entry> 
    <entry key="use2key"> 
    <value>use2value</value> 
    </entry> 
    </map> 
</constructor-arg> 
<constructor-arg> 
    <map> 
    <entry key="nature1key"> 
    <value>nature1value</value> 
    </entry> 
    <entry key="nature2key"> 
    <value>nature2value</value> 
    </entry> 
    </map> 
</constructor-arg> 
<constructor-arg> 
    <value>false</value> 
</constructor-arg> 
</bean> 

,什麼也發生?類的構造函數... ListDTO發生了變化,因此顯然不能從此(非常詳細的恕我直言)XML創建該bean。

有人可以解釋我爲什麼是個好習慣(是不是真的?)把這樣的事情在一個XML而不是Java代碼?如果它是在Java代碼中,只要ListDTO改變了,單元測試就會拒絕編譯(即使單元測試實例化這個bean的部分沒有被執行[無論出於何種原因])。

獎金的問題:是否有方法可以輕鬆地找到所有這些破「在XML豆」中的一個項目,除了運行所有的單元測試,看看哪些是失敗的,然後沖洗和重複的?

對我來說,似乎是一個很嚴重的問題,你可以改變一個構造函數和,彷彿一切都很好的IDE將採取行動:究竟是什麼理由? (*)

+0

(*)和寫作:<構造帶參數>爲「假'對我來說看起來不是一個很好的理由...... – Gugussee 2011-01-25 14:43:34

回答

6

這背後的想法是,你讓事情,在中央XML配置文件環境(開發,測試,生產)之間的差異,並通過使用不同的配置文件,您可以切換環境。

但是,這絕對不是用bean的配置,定義複雜的測試數據結構很好的做法。有人可能會這樣做,而新的傾向於依賴注入,只是因爲它是可能的。

+0

+1 ...所以可以在中央XML配置文件中保留需要「可移植」的內容,而不使用bean來定義複雜的測試數據結構? – Gugussee 2011-01-25 15:27:49

1

紅利問題:有沒有一種方法可以輕鬆地在項目中找到所有這些破壞的「XML in XML」,除了運行所有的單元測試,看看哪些失敗,然後漂洗和重複?

Spring Tool Suite或Eclipse的Spring插件可以檢查彈簧配置文件是否正確(具有所有構造函數參數並且不使用未知的setter)。

+0

+1,太棒了......我會盡量習慣可以驗證Spring配置文件的Eclipse/Spring Too Suite工具。 – Gugussee 2011-01-25 15:28:35

相關問題