2013-06-25 191 views
1

在我的項目,我看到這樣一個春天的依賴inujection語法在我的集成層:使用Spring註釋注入依賴

applicationContext.getBean("beanName"); 

地點和的ClassPathXmlApplicationContext的applicationContext實例「beanName」在Spring的XML定義。 如果我想用Annotation注入它,我應該使用哪一個? @Inject,@Autowired,@Resource.似乎我可以使用這些中的任何一個,我似乎無法確定哪一個。 這是SPring集成層,而不是MVC層,但我不認爲這有什麼區別。

回答

4

@Inject@Autowired做同樣的事情,它自動按類型。 @Inject是首選,因爲它是一個java註釋,不會將您與Spring聯繫起來。

@Resource通過名稱的自動裝配。當你有許多相同類型的bean時,這很有用。對於相同的行爲,您也可以使用@Named@Inject

2

@Inject是同義@Autowired
@Autowired此外報價可選注塑@Autowired(reqired=false)@Inject沒有此選項。

@Inject@ResourceJSR-299中被標準化,所以如果可能的話應該被優先考慮。

總之

,順序提到註釋匹配依賴待注射:

@Autowired和按類型@Inject

  1. 相配
  2. 由限定符(@Qualifier註釋)
  3. 匹配限制按名稱

@Resource

  1. 匹配按名稱按類型
  2. 匹配
  3. 限制由預選賽(@Qualifier,如果比賽是由名發現忽略)

你可以找到更多有關這些註釋:
http://blogs.sourceallies.com/2011/08/spring-injection-with-resource-and-autowired/