天天看點

The difference between @Autowired and @ResourceAutowired (由Spring提供)Resource(由J2EE提供)結論參考位址Autowired (由Spring提供)Resource(由J2EE提供)結論參考位址

Autowired (由Spring提供)

  1. @Autowired 與 @Resource 都可以通過注入 Field 或 setter 裝配bean,但 @Autowired 可以額外裝配 構造器、多參數方法,@Resource 隻能裝配 單參數方法。
  2. @Autowired 預設根據 類型 裝配,并且預設情況下該對象必須存在。如果你想允許空值,則必須明确标注 @Autowired(required=false)。除了按類型裝配外,也可以配合 @Qualifier 根據 名稱 裝配。

Resource(由J2EE提供)

  1. @Resource 預設根據 名稱裝配,允許在注解中直接指定名稱。當你注解時未明确指定名稱,則會先按照預設名稱進行檢索裝配。若檢索失敗,則會依據 類型 進行裝配。

結論

我更偏向于使用 @Resource 注解在 Field上,這樣可以省略 setter方法。

其次,這個注解由 J2EE 提供,可以在 J2EE 環境下通用,而 @Autowired 隻能在 Spring下使用。

最後,統一使用 @Resource 會讓代碼更優雅。

參考位址

http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#beans-autowired-annotation

http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#beans-resource-annotation

http://forum.spring.io/forum/spring-projects/container/40092-autowired-and-resource-difference