2013-03-21 98 views
4

我繼承了一個使用Spring自動裝配的應用程序,並且每個自動裝配構造函數都充滿了Assert.notNull(),以便在繼續之前檢查每個參數。在生產代碼中使用Spring Assert.notnull

我無法看到構造函數自動裝配如何讓這些參數爲空,因此這些斷言似乎是多餘的,並使代碼看起來雜亂無章。

我很感謝它對於手動注入參數的單元測試可能有用,但我認爲測試中的NPE足以表明測試沒有正確初始化。

在我去'整理'代碼之前,我想我只是問我是否錯過了一些東西?

+1

繼續前進,整齊 – NimChimpsky 2013-03-21 13:28:04

回答

1

我認爲這只是額外的預防 - 自動裝配是容器的一個功能,與代碼分離並且可以在任何時候禁用。這樣你就可以明確定義構造函數的合約。

比方說,在那個特定的類人禁用自動連接,取而代之的是:

<bean id="myBean" class="com.my.company.BeanImpl"> 
    <constructor-arg name="someService"> 
     <null /> 
    </constructor-arg> 
    </bean> 

我認爲這是你缺少:)

+0

在極不可能點我係統,但我會接受,如果有人打算濫用它,那麼斷言會阻止他們這樣做。所有這一切,我感覺到一個代碼整潔來... ... – DaveRlz 2013-03-22 09:03:57