2012-07-09 66 views

回答

2

首先在參考文檔中檢查4.9.1 @Required。恕我直言,自動裝配如此常用,這種註釋的使用受到限制。

這是在XML日子相當不錯 - 如果你忘了定義XML <property name="movieFinder" .../>但記得把@Required周圍movieFinder場或setter,春天會拋出異常。

請注意,這個註釋並不能爲您解決最常見的Spring新手錯誤 - 使用容器控件之外的new運算符手動創建一個bean。 Spring必須對bean進行後處理,並且只有當註釋的類實際上由容器創建時(但依賴關係未被注入)時才拋出異常。

這些日子裏,你只是標註的那場與@Autowired/@Resource/@Inject,如果未發現豆(否則離開null)拋出異常(沒有這樣的豆或類似)。如果你可以放@Required註釋,什麼能夠防止你用@Autowired替換它,並完全擺脫XML?

這就是說,對於一些@Required可能有一個很好的文檔價值。

+0

+1對於很好的解釋。只是想知道在使用XML來定義bean(而不是簡單的註釋)並使用像@ @ Required這樣的註釋的情況下,這可能是一種情況嗎?如果你使用註解來定義bean,那麼'@ Required'將如何來拯救? – xyz 2012-07-09 16:34:32

+0

@Ajinkya:再次恕我直言,如果你已經開始使用註釋,完全去爲他們。正如我上面所寫的,如果您使用註釋,默認情況下,如果未找到bean,則它們會引發異常。所以'@必需的'是多餘的。 – 2012-07-09 16:35:54

+0

那麼你會如何配置一個對象從外部庫只使用註釋? – smp7d 2012-07-09 16:38:40

1

這是爲了防止大部分開發人員的錯誤。

有時候開發商覺得這事會在實際上不是那裏的原因過多,包括上下文:

  1. 只需忘了加上豆
  2. 相關問題(當從依賴組件自動識別)
  3. 類型/包誤解

在這種情況下,它是更好後來上下文負載,而不是像一個NPE東西失敗。

相關問題