本篇內容主要講解“spring的@Autowierd和@Resource有什么用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“spring的@Autowierd和@Resource有什么用”吧!
關于@Autowierd && @Resource 你真的了解嗎
1.@Autowierd
2.@Resource
2.1@Resource具體裝配順序,即指定的注入實例的策略
3.注意
3.1 @Autowierd解決
3.2 @Resource解決
4.高級用法
@Autowire和@Resource注解對比
一、@Resource是J2EE提供的,@Autowire是Spring提供的
二、兩個注解使用name區別注入的寫法不同
三、然后就沒有什么不同了
使用byType注入,默認情況下要求依賴必須存在;配置required=false表示依賴可為null
下面代碼第一個注入是會報錯的,編輯器是會有紅色提示。
因為代碼中沒有這樣的bean,截圖也能看的出來。
@Autowired private Data data; //報錯 @Autowired(required = false) //沒事 private Data data2;
按照ByName自動注入,@Resource有兩個重要的屬性:name和type,而Spring將@Resource注解的 name屬性解析為bean的名字,而type屬性則解析為bean的類型。
所以,如果使用name屬性,則使用byName的自動注入策略,而使用type屬性時則使用byType自動注入策略。
如果既不制定name也不制定type屬性,這時將通過反射機制使用byName自動注入策略。
①如果同時指定了name和type,則從Spring上下文中找到唯一匹配的bean進行裝配,找不到則拋出異常。
②如果指定了name,則從上下文中查找名稱(id)匹配的bean進行裝配,找不到則拋出異常。
③如果指定了type,則從上下文中找到類似匹配的唯一bean進行裝配,找不到或是找到多個,都會拋出異常。
④如果既沒有指定name,又沒有指定type,則自動按照byName方式進行裝配;如果沒有匹配,則回退為一個原始類型進行匹配,如果匹配則自動裝配(即按照byType的方式)
如果是接口或者抽象類的話那么需要實現類唯一,否則創建實例出錯,或者說當接口或抽象類有n多個實現類(繼承類)時,在注入的必須指定此時要注入的實現類(繼承類)。
找到兩個實現類,報錯?。?!
@Autowierd需要借助@Qualifier來幫助區分使用具體的哪個實現類
@Autowired @Qualifier("userServiceImpl") private UserService userService;
@Resource 可以使用name屬性或者是type屬性來指定想要注入的實現類。
@Resource(name = "userServiceImpl2") private UserService userService1; @Resource(type = UserServiceImpl.class) private UserService userService3;
@Autowierd 注入抽象類時,當抽象類有多個繼承類,可以使用
@Autowierd List<抽象類> ll;//來獲取所有的子類實現集合
@Autowired private List<UserService> userServices;
小結:
@Autowierd & @Resource 功能相當,都可以注入實例
@Autowierd 通過byType的方式注入
@Resource 優先使用byName的方式注入,然后使用@Autowire的方式注入
這就是為什么mybatis自動生成的Mapper文件,你使用@Resouce Idea不會提示紅色下劃線(其實在dao文件的已經被掃描了,但是ieda在編輯的時候找不到,但是在運行中是能夠找到的)
1.dao層配置
2.mybatis自動生成Mapper文件
3具體情況:一看便知
看著報錯,其實不會有錯,以為在2中已配置包掃描了。
@Autowired private TCommentInfoMapper tCommentInfoMapper; @Resource private TCommentInfoMapper tCommentInfoMapper2;
在我看來@Autowire和@Resource有兩個區別:
網上很多人專門介紹@Resource能夠用變量名或set方法里的變量名作為對象name來使用,說的好像@Autowire就不能似的.
到此,相信大家對“spring的@Autowierd和@Resource有什么用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。