溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Spring中獲取Bean對(duì)象的注入方式有哪些

發(fā)布時(shí)間:2023-03-11 11:54:12 來(lái)源:億速云 閱讀:72 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容主要講解“Spring中獲取Bean對(duì)象的注入方式有哪些”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“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)代碼如下:

    Spring中獲取Bean對(duì)象的注入方式有哪些

    Controller 類(lèi)的實(shí)現(xiàn)代碼如下:

    Spring中獲取Bean對(duì)象的注入方式有哪些

    獲取 Controller 中的 getUser ?法:

    Spring中獲取Bean對(duì)象的注入方式有哪些

    執(zhí)行結(jié)果如下:

    Spring中獲取Bean對(duì)象的注入方式有哪些

    屬性注?的核?實(shí)現(xiàn)如下:

    Spring中獲取Bean對(duì)象的注入方式有哪些

    構(gòu)造?法注?

    注意:如果當(dāng)前類(lèi)中只有一個(gè)構(gòu)造方法,那么@Autowired 注解可以省略。

    Spring中獲取Bean對(duì)象的注入方式有哪些

    Setter 注?

    Spring中獲取Bean對(duì)象的注入方式有哪些

    屬性注?、構(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)?注?,如下代碼所示:

    Spring中獲取Bean對(duì)象的注入方式有哪些

    那么@Autowired 和 @Resource 有什么區(qū)別呢?

    Spring中獲取Bean對(duì)象的注入方式有哪些

    注意:@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è)置。

    Spring中獲取Bean對(duì)象的注入方式有哪些

    Spring中獲取Bean對(duì)象的注入方式有哪些

    到此,相信大家對(duì)“Spring中獲取Bean對(duì)象的注入方式有哪些”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI