2012-10-23 50 views
2

我想確定我是否正確理解這一點。 Spring需要一個setter來注入一個字段引用?難道它只是把它看作是一個公共領域嗎?春天的吸氣和依賴者?

是否有替代方案。從我所瞭解的Java EE的@Inject註釋可以做到這一點沒有任何問題。但我一直更傾向於春天。

回答

0

這取決於你如何創建你的bean。 Spring不需要setter。有許多其他的方法:經由註釋

  • 自動裝配(有或沒有限定符)在實地
  • 構造方法注入(或者通過在代碼XML或註釋)

公共字段(正如你所建議的那樣)可能會起作用,儘管我從來沒有嘗試過它,即使它確實如此,也會提出反對意見。

不幸的是,XML方法沒有查看私人領域(我知道的)。您可能需要添加setter,使用構造函數或設置某種自動裝配。

請記住,自動裝配可以與XML結合使用。即使通過xml創建bean(與@Component和組件掃描相對),Spring也會關注您的佈線註釋。

0

沒有必要讓Setter注入引用,你可以在一個類的公共變量或setter方法上使用Autowire,也可以使用constructor-arg注入bean,這是一種注入依賴關係的好方法並且自動裝配也可以在構造函數上完成。 @inject也具有與@autowired相同的功能,但@Autowired具有額外的行爲,它在內部也使用@required屬性來查看bean是否具有引用並正確注入。

0

除了setter注入外,Spring還爲DI提供了幾種選擇。例如,您可以使用constructor injection。或者,您可以將Spring的@Autowired註釋用於構造函數,字段或setter注入。既然你提到了它,我想你也會對知道Spring支持@Inject註解感興趣。