最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring-@Autowired注入與構(gòu)造函數(shù)注入使用方式

 更新時(shí)間:2023年12月01日 15:24:07   作者:smilecjw  
這篇文章主要介紹了spring-@Autowired注入與構(gòu)造函數(shù)注入使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

前言

因?yàn)闃I(yè)務(wù)關(guān)系也看了些同事寫(xiě)的代碼,因?yàn)楣緵](méi)有明確規(guī)定,有一部分人在注入依賴的時(shí)候使用了用Spring推薦的構(gòu)造器注入的方式,一部分人使用了@Autowired的注解進(jìn)行注入。

因此,接下來(lái)我試著總結(jié)歸納一下相關(guān)的情況,做一次回顧。

用自己的話去說(shuō)出來(lái)才算是真的掌握。

使用介紹

1.@Autowired注入

@RestController
@RequestMapping("/test")
public class TestController {
    @Autowired
    private List<TestService> testServices;
    @Autowired
    private List<ChainAsbtract> chains;
 
    private ChainAsbtract target;
 
}

2.構(gòu)造器注入

Spring4.3+之后,constructor注入支持非顯示注入方式。

@RestController
@RequestMapping("/test")
public class TestController {
//    @Autowired
    private final List<TestService> testServices;
//    @Autowired
    private final List<ChainAsbtract> chains;
 
//    @Autowired
    public TestController(List<TestService> testServices, List<ChainAsbtract> chains) {
        this.testServices = testServices;
        this.chains = chains;
    }
 
    
}

3.setter注入

@RestController
@RequestMapping("/test")
public class TestController {
//    @Autowired
    private final List<TestService> testServices;
//    @Autowired
    private final List<ChainAsbtract> chains;
 
    @Autowired
    public void setTestServices(List<TestService> testServices){
        this.testServices = testServices;
    }
 
    @Autowired
    public void setTestServices(List<ChainAsbtract> chains){
        this.chains = chains;
    }
    
}

事實(shí)上,spring在4.x版本后就推薦使用構(gòu)造器的方式的來(lái)注入fileld

官方推薦理由

  • 單一職責(zé):當(dāng)使用構(gòu)造函數(shù)注入的時(shí)候,你會(huì)很容易發(fā)現(xiàn)參數(shù)是否過(guò)多,這個(gè)時(shí)候需要考慮你這個(gè)類的職責(zé)是否過(guò)大,考慮拆分的問(wèn)題;而當(dāng)使用@Autowired注入field的時(shí)候,不容易發(fā)現(xiàn)問(wèn)題
  • 依賴不可變:只有使用構(gòu)造函數(shù)注入才能注入final
  • 依賴隱藏:使用依賴注入容器意味著類不再對(duì)依賴對(duì)象負(fù)責(zé),獲取依賴對(duì)象的職責(zé)就從類抽離出來(lái),IOC容器會(huì)幫你自動(dòng)裝備。這意味著它應(yīng)該使用更明確清晰的公用接口方法或者構(gòu)造器,這種方式就能很清晰的知道類需要什么和到底是使用setter還是構(gòu)造器
  • 降低容器耦合度:依賴注入框架的核心思想之一是托管類不應(yīng)依賴于所使用的DI容器。換句話說(shuō),它應(yīng)該只是一個(gè)普通的POJO,只要您將其傳遞給所有必需的依賴項(xiàng),就可以獨(dú)立地實(shí)例化。這樣,您可以在單元測(cè)試中實(shí)例化它,而無(wú)需啟動(dòng)IOC容器并單獨(dú)進(jìn)行測(cè)試(使用一個(gè)可以進(jìn)行集成測(cè)試的容器)。如果沒(méi)有容器耦合,則可以將該類用作托管或非托管類,甚至可以切換到新的DI框架。

另外,在使用構(gòu)造器的使用能避免注入的依賴是空的情況。

因?yàn)樵赽ean的生命周期里面先執(zhí)行的是bean的構(gòu)造器,然后才給bean里面的屬性賦值。

具體內(nèi)容在bean的生命周期里面,后面我學(xué)習(xí)之后按照自己的理解寫(xiě)寫(xiě)。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Boot Maven 插件如何構(gòu)建可執(zhí)行 JAR 的核心配置

    Spring Boot Maven 插件如何構(gòu)建可執(zhí)行 JAR 的核心

    SpringBoot核心Maven插件,用于生成可執(zhí)行JAR/WAR,內(nèi)置服務(wù)器簡(jiǎn)化部署,支持熱部署、多環(huán)境配置及依賴管理,提升開(kāi)發(fā)效率與構(gòu)建靈活性,本文給大家介紹Spring Boot Maven 插件如何構(gòu)建可執(zhí)行JAR的核心配置,感興趣的朋友一起看看吧
    2025-07-07
  • 教你用Java在個(gè)人電腦上實(shí)現(xiàn)微信掃碼支付

    教你用Java在個(gè)人電腦上實(shí)現(xiàn)微信掃碼支付

    今天給大家?guī)?lái)的是Java實(shí)戰(zhàn)的相關(guān)知識(shí),文章圍繞著Java在個(gè)人電腦上實(shí)現(xiàn)微信掃碼支付展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • SpringBoot3.x整合swagger的實(shí)現(xiàn)示例

    SpringBoot3.x整合swagger的實(shí)現(xiàn)示例

    本文主要介紹了SpringBoot3.x整合swagger的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-08-08
  • 詳解JAVA類加載機(jī)制(推薦)

    詳解JAVA類加載機(jī)制(推薦)

    這篇文章主要介紹了JAVA類加載機(jī)制的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • java異常機(jī)制分析

    java異常機(jī)制分析

    這篇文章主要介紹了java異常機(jī)制,包括異常機(jī)制的捕獲、拋出及常見(jiàn)的異常機(jī)制總結(jié),需要的朋友可以參考下
    2014-09-09
  • SpringBoot3.2.2整合MyBatis Plus3.5.5的詳細(xì)過(guò)程

    SpringBoot3.2.2整合MyBatis Plus3.5.5的詳細(xì)過(guò)程

    這篇文章給大家介紹了SpringBoot3.2.2整合MyBatis Plus3.5.5的詳細(xì)過(guò)程,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • Java 值傳遞和引用傳遞詳解及實(shí)例代碼

    Java 值傳遞和引用傳遞詳解及實(shí)例代碼

    這篇文章主要介紹了 Java 值傳遞和引用傳遞詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • java使用es查詢的示例代碼

    java使用es查詢的示例代碼

    本篇文章主要介紹了java使用es查詢的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • java之this關(guān)鍵字用法實(shí)例分析

    java之this關(guān)鍵字用法實(shí)例分析

    這篇文章主要介紹了java之this關(guān)鍵字用法實(shí)例分析,較為詳細(xì)的講述了Java中this關(guān)鍵字的用法及適用范圍,并附帶實(shí)例程序加以說(shuō)明,需要的朋友可以參考下
    2014-09-09
  • SpringBoot中14個(gè)日志使用技巧分享

    SpringBoot中14個(gè)日志使用技巧分享

    日志是軟件開(kāi)發(fā)中不可或缺的一部分,它能幫助我們了解應(yīng)用運(yùn)行狀態(tài)、調(diào)試問(wèn)題和監(jiān)控性能,下面我們來(lái)看看14個(gè)SpringBoot日志使用技巧,希望對(duì)大家有所幫助
    2025-05-05

最新評(píng)論

榆林市| 理塘县| 安远县| 板桥市| 武强县| 郓城县| 松原市| 大化| 玉树县| 北碚区| 苍梧县| 三明市| 普陀区| 彭阳县| 应城市| 辽中县| 永昌县| 荔波县| 内乡县| 武山县| 亳州市| 中超| 麻城市| 林芝县| 汶上县| 军事| 丹阳市| 油尖旺区| 钟祥市| 南木林县| 鄱阳县| 保靖县| 青海省| 沂南县| 四川省| 清原| 广灵县| 镇平县| 辰溪县| 东兰县| 腾冲县|