<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
寫過Spring框架的同學應該都知道,Spring當中使用欄位注入的時候既可以用 @Autowired
又可以用 @Resource
,但是當我使用 @Autowired
,idea會提示我說,不建議使用欄位注入:
但如果我用的是 @Resource
,就不會有這樣的提示:
於是在好奇心的驅使下,我探究了一下他們兩者的區別,並瞭解了為什麼idea會對 @Autowired
發出弱警告,在這裡分享給大家。
@Autowired
預設的注入方式為byType(根據型別進行匹配),也就是說會優先根據介面型別去匹配並注入 Bean (介面的實現類),如果想要指定名稱,可以通過 @Qualifier
配合使用。
@Autowired private UserSafetyMapper userSafetyMapper; // 或 @Autowired @Qualifier("userSafetyMapper") private UserSafetyMapper userSafetyMapper;
@Resource
預設注入方式為 byName(根據命名進行匹配)。如果無法通過名稱匹配到對應的實現類的話,注入方式會變為byType。
// 1.預設注入方式 @Resource private UserSafetyMapper userSafetyMapper; // 2.指定注入方式 @Resource(name = "userSafetyMapper", type = UserSafetyMapper.class) private UserSafetyMapper userSafetyMapper;
@Autowired
是spring提供的註解,@Resource
是JDK提供的註解。其實這也是為什麼idea會對 @Autowired
發出警告,而不會對@Resource
發出警告的原因。
根據我查閱的一些資源和一點個人理解,得出以下分析:
@Autowired
是Spring提供的,它只能適用於Spring,是特定IOC提供的特定註解,這就導致了程式和框架的強耦合,一旦換用了其他的IOC框架,就會導致失效,無法支援注入。而 @Resource
是Java提供的一種標準,一般的IOC容器應該去主動對 @Resource
做相容,這樣我們即使換了其他的框架,也可以正常使用欄位注入的功能。
不過話又說回來,我們在搭建一個專案的時候,剛開始選好框架了,以後很大可能就不會再去更換為其他的框架了,即使欄位注入鬆耦合了,但其實還有其他更多的東西需要去修改,所以我個人認為用這兩個都可以,具體使用哪個還得看公司的編碼規範,個人專案的話,統一使用一個就好了。
如果同時指定了name和type,流程如下:
如果指定了name,流程如下:
只是指定了@Resource註解的name,則按name後的名字去bean元素裡查詢有與之相等的name屬性的bean。
如果指定了type,流程如下:
只指定@Resource註解的type屬性,則從上下文中找到型別匹配的唯一bean進行裝配,找不到或者找到多個,都會丟擲異常。
如果既沒有指定name,也沒有指定type,流程如下:
既不指定name屬性,也不指定type屬性,則自動按byName方式進行查詢。如果沒有找到符合的bean,則回退為一個原始型別進行進行查詢,如果找到就注入。
到此這篇關於Spring框架中@Autowired和@Resource區別的文章就介紹到這了,更多相關Spring @Autowired和@Resource區別內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45