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

SpringBoot之為何推薦使用構(gòu)造器注入

 更新時(shí)間:2024年03月27日 10:22:18   作者:Kareza  
這篇文章主要介紹了SpringBoot之為何推薦使用構(gòu)造器注入問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

概述

通過對注解注入、 Setter 注入與構(gòu)造器注入三種注入方式的橫向?qū)Ρ?,解釋為?SpringBoot 推薦用戶使用構(gòu)造器注入。

注解注入

美觀、大方,只需要一個(gè)注解 @Autowired 就可以完成注入。

Show Code

Computer.java

/**
 * [ 計(jì)算機(jī) ]
 *
 * @author Kareza
 * @time 2021/5/25 10:58 上午
 * @since 1.8
 */
@Component
public class Computer {
    /**
     * 上網(wǎng)
     */
    public void surfInternet(String user) {
        Console.log("{} 正在上網(wǎng)沖浪", user);
    }
}

Room.java

/**
 * [ 房間 ]
 * @author Kareza
 * @since 1.8
 * @time 2021/5/25 11:42 上午
 */
@Service
public class Room {

    @Autowired
    private Computer computer;

    /**
     * 書房
     */
    public void schoolroom() {
        Console.log("書房里~~");
        // 網(wǎng)上沖浪
        computer.surfInternet("chenyiqiang");
    }
}

對于IOC容器以外的環(huán)境,除了使用反射來提供它需要的依賴之外,無法復(fù)用該實(shí)現(xiàn)類。

Room room = new Room();
room.schollroom(); // -> NullPointerException

且注解注入可能會導(dǎo)致循環(huán)依賴,在A中注入B,在B中又注入A。

Setter注入

靈活,可以在類實(shí)例化后,重新注入。

Show Code

Computer.java

同上

Room.java

/**
 * [ 房間 ]
 * @author Kareza
 * @since 1.8
 * @time 2021/5/25 11:42 上午
 */
@Service
public class Room {

    private Computer computer;

    @Autowired
    public void setComputer(Computer computer) {
        this.computer = computer;
    }

    /**
     * 書房
     */
    public void schoolroom() {
        Console.log("書房里~~");
        // 網(wǎng)上沖浪
        computer.surfInternet("chenyiqiang");
    }
}

其實(shí)在 Spring 3.x 官方推薦的注入方式就是這種,因?yàn)榭紤]到使用構(gòu)造器注的方式,如果需要注入到依賴過多,就會使得構(gòu)造器的參數(shù)過長。

但在更新到 4.x 官方又轉(zhuǎn)回推薦構(gòu)造器注入,原因下文會說。

構(gòu)造器注入

保證注入的組件不可變不為空

保證使用構(gòu)造器注入的類呈完全初始化的狀態(tài)

Show Code

Computer.java

同上

Room.java

/**
 * [ 房間 ]
 * @author Kareza
 * @since 1.8
 * @time 2021/5/25 11:42 上午
 */
@Service
public class Room {

    private final Computer computer;

    @Autowired
    public Room(Computer computer) {
        this.computer = computer;
    }

    /**
     * 書房
     */
    public void schoolroom() {
        Console.log("書房里~~");
        // 網(wǎng)上沖浪
        computer.surfInternet("chenyiqiang");
    }
}

因?yàn)槭褂?final 修飾詞,所以保證了注入組件的不可變。

因?yàn)榇a中實(shí)現(xiàn)了有參構(gòu)造器,且該參數(shù)需由 Spring 容器傳入,當(dāng) Spring 容器中沒有該參數(shù),則返回錯(cuò)誤,所以保證了注入組件不為空。

在將依賴組件傳入 Room 對象構(gòu)造器前,必須先調(diào)用依賴組件的構(gòu)造方法,所以返回的是完全初始化的狀態(tài)。

總結(jié)

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

相關(guān)文章

  • 詳解Spring Batch 輕量級批處理框架實(shí)踐

    詳解Spring Batch 輕量級批處理框架實(shí)踐

    這篇文章主要介紹了詳解Spring Batch 輕量級批處理框架實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 淺談@RequestMapping注解的注意點(diǎn)

    淺談@RequestMapping注解的注意點(diǎn)

    這篇文章主要介紹了淺談@RequestMapping注解的注意點(diǎn),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java如何獲取指定目錄文件列表

    Java如何獲取指定目錄文件列表

    這篇文章主要介紹了Java如何獲取指定目錄文件列表,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Spring MVC之WebApplicationContext_動力節(jié)點(diǎn)Java學(xué)院整理

    Spring MVC之WebApplicationContext_動力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了Spring MVC之WebApplicationContext的相關(guān)資料,需要的朋友可以參考下
    2017-08-08
  • 深入理解Java責(zé)任鏈模式實(shí)現(xiàn)靈活的請求處理流程

    深入理解Java責(zé)任鏈模式實(shí)現(xiàn)靈活的請求處理流程

    本文詳細(xì)介紹了Java中的責(zé)任鏈模式,幫助您理解其工作原理,以及如何在代碼中實(shí)現(xiàn)。該模式可以將請求沿著處理鏈路傳遞,實(shí)現(xiàn)靈活的請求處理流程。通過本文的學(xué)習(xí),您將獲得在Java應(yīng)用程序中使用責(zé)任鏈模式的知識和技能
    2023-04-04
  • springboot啟動加載CommandLineRunner @PostConstruct問題

    springboot啟動加載CommandLineRunner @PostConstruct問題

    這篇文章主要介紹了springboot啟動加載CommandLineRunner @PostConstruct問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • java 使用策略模式操作JDBC數(shù)據(jù)庫

    java 使用策略模式操作JDBC數(shù)據(jù)庫

    這篇文章主要介紹了java 使用策略模式操作JDBC數(shù)據(jù)庫的相關(guān)資料,這里提供實(shí)例實(shí)現(xiàn)對JDBC數(shù)據(jù)庫的操作增刪改查的功能,需要的朋友可以參考下
    2017-08-08
  • 總結(jié)Java常用排序算法

    總結(jié)Java常用排序算法

    在本文里我們給大家整理了關(guān)于Java常用排序算法以及實(shí)例代碼分析,需要的朋友們跟著學(xué)習(xí)下。
    2019-03-03
  • Maven打包之解決沒有依賴jar包問題及分析

    Maven打包之解決沒有依賴jar包問題及分析

    用戶使用Maven打包FTPServer程序時(shí),因未配置依賴打包導(dǎo)致jar體積過小且運(yùn)行報(bào)錯(cuò),解決方法是添加maven-assembly插件生成包含依賴的jar包,確保程序正常運(yùn)行
    2025-09-09
  • Eclipse IDE可支持Java 14編程

    Eclipse IDE可支持Java 14編程

    這篇文章主要介紹了Eclipse IDE可支持Java 14編程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04

最新評論

枣庄市| 武功县| 乌拉特后旗| 荔浦县| 衡水市| 房山区| 长海县| 庄浪县| 恩平市| 石城县| 新昌县| 津市市| 阳曲县| 武穴市| 侯马市| 三原县| 嘉峪关市| 嘉峪关市| 沂源县| 沙湾县| 叙永县| 黑山县| 沧州市| 玉树县| 雷山县| 微博| 台前县| 西宁市| 垦利县| 宜良县| 容城县| 远安县| 营口市| 博野县| 南宫市| 桐城市| 新营市| 洮南市| 南靖县| 沂水县| 吉林省|