Spring中獲取Bean對(duì)象的三種注入方式與兩種注入方法詳解
前言
獲取 bean 對(duì)象也叫做對(duì)象裝配,是把對(duì)象取出來(lái)放到某個(gè)類(lèi)中,有時(shí)候也叫對(duì)象注?。
對(duì)象裝配(對(duì)象注?)的實(shí)現(xiàn)?法以下 3 種:屬性注?、構(gòu)造?法注?、Setter 注?。
下面例子均是將 Service 類(lèi)注?到 Controller 類(lèi)中。
獲取Bean對(duì)象的三種注入方式
屬性注?
屬性注?是使?@Autowired 實(shí)現(xiàn)的,將 Service 類(lèi)注?到 Controller 類(lèi)中。
Service 類(lèi)的實(shí)現(xiàn)代碼如下:
Controller 類(lèi)的實(shí)現(xiàn)代碼如下:
獲取 Controller 中的 getUser ?法:
執(zhí)行結(jié)果如下:
屬性注?的核?實(shí)現(xiàn)如下:
構(gòu)造?法注?
注意:如果當(dāng)前類(lèi)中只有一個(gè)構(gòu)造方法,那么@Autowired 注解可以省略。
Setter 注?
屬性注?、構(gòu)造?法注?和Setter 注?有什么區(qū)別呢?
1.屬性注入的特點(diǎn)就是寫(xiě)法簡(jiǎn)單,但是通用性不好,它只能運(yùn)行在IoC容器下,如果是非IoC容器就會(huì)出現(xiàn)問(wèn)題。
2.Setter注入是早期Spring版本的推薦寫(xiě)法,但是Setter注入通用性沒(méi)有構(gòu)造方法注入的通用性好,所以現(xiàn)在Spring官方推薦的是構(gòu)造方法注入。
3.構(gòu)造方法注入:通用性更好,它能確保在使用注入對(duì)象之前,此時(shí)這個(gè)注入對(duì)象一定是初始化過(guò)了。當(dāng)構(gòu)造方法注入?yún)?shù)過(guò)多時(shí),此時(shí)開(kāi)發(fā)者就要檢查自己所寫(xiě)的代碼是否符合單一設(shè)計(jì)原則的規(guī)范了,這種注入方式也是Spring后期官方推薦的注入方式。
兩種注入方法
在進(jìn)?類(lèi)注?時(shí),除了可以使?@Autowired 關(guān)鍵字之外,我們還可以使? @Resource 進(jìn)?注?,如下代碼所示:
那么@Autowired 和 @Resource 有什么區(qū)別呢?
注意:@Resource只支持屬性注入和Setter注入,不支持構(gòu)造方法注入。
1.@Autowired 和 @Resource的出身不同:@Resource來(lái)自于JDK(java的親兒子),而@Autowired是Spring框架提供的。
2.用法不同:@Autowired三種注入方式都支持,但是@Resource不支持構(gòu)造方法注入。
3.支持的參數(shù)不同:@Resource支持更多的參數(shù)設(shè)置,比如name、type等,而@Autowired只支持required參數(shù)設(shè)置。
總結(jié)
到此這篇關(guān)于Spring中獲取Bean對(duì)象的三種注入方式與兩種注入方法的文章就介紹到這了,更多相關(guān)Spring獲取Bean對(duì)象注入方式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Cloud Gateway Hystrix fallback獲取異常信息的處理
這篇文章主要介紹了Spring Cloud Gateway Hystrix fallback獲取異常信息的處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Java零基礎(chǔ)教程之do-while循環(huán)語(yǔ)句實(shí)例
Java中的do-while循環(huán)是一種后測(cè)試循環(huán)語(yǔ)句,它類(lèi)似于while循環(huán),但它先執(zhí)行循環(huán)體中的代碼,然后再進(jìn)行條件判斷,無(wú)論條件是否滿(mǎn)足,至少會(huì)執(zhí)行一次循環(huán)體中的代碼,這篇文章主要給大家介紹了關(guān)于Java零基礎(chǔ)教程之do-while循環(huán)語(yǔ)句的相關(guān)資料,需要的朋友可以參考下2024-09-09nacos服務(wù)注冊(cè)服務(wù)發(fā)現(xiàn)依賴(lài)配置詳解
這篇文章主要為大家介紹了nacos服務(wù)注冊(cè)服務(wù)發(fā)現(xiàn)依賴(lài)配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09Java面試高頻問(wèn)題之RabbitMQ系列全面解析
在介紹RabbitMQ之前實(shí)現(xiàn)要介紹一下MQ,MQ是什么?MQ全稱(chēng)是Message Queue,可以理解為消息隊(duì)列的意思,簡(jiǎn)單來(lái)說(shuō)就是消息以管道的方式進(jìn)行傳遞。RabbitMQ是一個(gè)實(shí)現(xiàn)了AMQP(Advanced Message Queuing Protocol)高級(jí)消息隊(duì)列協(xié)議的消息隊(duì)列服務(wù),用Erlang語(yǔ)言的2021-11-11MyBatis使用標(biāo)簽動(dòng)態(tài)操作數(shù)據(jù)庫(kù)詳解
這篇文章主要介紹了MyBatis中使用標(biāo)簽動(dòng)態(tài)操作數(shù)據(jù)庫(kù)的方法,動(dòng)態(tài)SQL是指在運(yùn)行PL/SQL塊時(shí)動(dòng)態(tài)輸入SQL語(yǔ)句,是Mybatis的強(qiáng)大特性之?,能夠完成不同條件下不同的sql拼接,需要的朋友可以參考下2024-05-05大數(shù)據(jù) java hive udf函數(shù)的示例代碼(手機(jī)號(hào)碼脫敏)
這篇文章主要介紹了大數(shù)據(jù) java hive udf函數(shù)(手機(jī)號(hào)碼脫敏),的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06