spring三種註解實現Bean依賴注入

Spring 的基於註解實現Bean依賴注入支持如下三種註解
Spring自帶依賴注入註解
Spring自帶的一套依賴注入註解
1 @Required:依賴檢查;
2 @Autowired:自動裝配
自動裝配,用於替代基於XML配置的自動裝配
基於@Autowired的自動裝配,默認是根據類型注入,可以用於構造器、字段、方法注入
@Resource的作用相當於@Autowired,只不過@Autowired按byType自動注入,而@Resource默認按byName自動注入罷了。
@Resource有兩個屬性是比較重要的,分別是name和type,Spring將@Resource註解的name屬性解析爲bean的名字,而type屬性則解析爲bean的類型。所以如果使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策略。如果既不指定name也不指定type屬性,這時將通過反射機制使用byName自動注入策略。
@Resource裝配順序
如果同時指定了name和type,則從Spring上下文中找到唯一匹配的bean進行裝配,找不到則拋出異常
如果指定了name,則從上下文中查找名稱(id)匹配的bean進行裝配,找不到則拋出異常
如果指定了type,則從上下文中找到類型匹配的唯一bean進行裝配,找不到或者找到多個,都會拋出異常
如果既沒有指定name,又沒有指定type,則自動按照byName方式進行裝配(見2);
如果沒有匹配,則回退爲一個原始類型(UserDao)進行匹配,如果匹配則自動裝配;
@Resource註解在字段上,這樣就不用寫setter方法了,並且這個註解是屬於J2EE的,減少了與spring的耦合。這樣代碼看起就比較優雅。
3 @Value:注入SpEL表達式
用於注入SpEL表達式,可以放置在字段方法或參數上
@Value(value = “SpEL表達式”)
@Value(value = “#{message}”)
4 @Qualifier:限定描述符,用於細粒度選擇候選者
@Qualifier限定描述符除了能根據名字進行注入,但能進行更細粒度的控制如何選擇候選者
@Qualifier(value = “限定標識符”)
如果兩個類都實現了一個接口作爲bean,這個時候有可能就無法區分bean的具體類型,就需要Qualifier!
JSR-250註解
Java平臺的公共註解,是Java EE 5規範之一,在JDK6中默認包含這些註解,從Spring2.5開始支持。
1 @Resource:自動裝配,默認根據類型裝配,如果指定name屬性將根據名字裝配,可以使用如下方式來指定
@Resource(name = “標識符”)
字段或setter方法
2 @PostConstruct和PreDestroy:通過註解指定初始化和銷燬方法定義
JSR-330註解
JSR-330註解
1 @Inject:等價於默認的@Autowired,只是沒有required屬性
2 @Named:指定Bean名字,對應於Spring自帶@Qualifier中的缺省的根據Bean名字注入情況
3 @Qualifier:只對應於Spring自帶@Qualifier中的擴展@Qualifier限定描述符註解,即只能擴展使用,沒有value屬性
JPA註解
用於注入持久化上下文和屍體管理器。
JPA註解
@PersistenceContext
@PersistenceUnit
@Service用於標註業務層組件
@Controller用於標註控制層組件(如struts中的action)
@Repository用於標註數據訪問組件,即DAO組件
@Component泛指組件,當組件不好歸類的時候,我們可以使用這個註解進行標註。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章