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

Java Spring的依賴注入理解及@Autowired用法示例詳解

 更新時(shí)間:2025年07月23日 14:29:57   作者:{?■_■}  
文章介紹了Spring依賴注入(DI)的概念、三種實(shí)現(xiàn)方式(構(gòu)造器、Setter、字段注入),區(qū)分了@Autowired(注入Bean)與@Value(注入簡(jiǎn)單類型)的用途,并說(shuō)明@Bean方法參數(shù)可自動(dòng)裝配依賴,無(wú)需顯式注解,感興趣的朋友跟隨小編一起看看吧

一、什么是依賴注入(DI)?

1. 定義

依賴注入(Dependency Injection) 是 Spring 框架的核心功能之一,它指的是:

由 Spring 容器來(lái)管理對(duì)象之間的依賴關(guān)系,并自動(dòng)將依賴對(duì)象注入到目標(biāo)對(duì)象中。

2. 舉個(gè)例子

比如:

public class BookService {
    private BookDao bookDao;
}

這里 BookService 依賴于 BookDao,如果手動(dòng)創(chuàng)建:

BookDao bookDao = new BookDaoImpl();
BookService service = new BookService(bookDao);

而使用 Spring 后,你只需要告訴 Spring:

“我需要一個(gè) BookDao,你幫我自動(dòng)注入進(jìn)來(lái)。”

Spring 會(huì)自動(dòng)完成這個(gè)過程。

二、依賴注入的幾種方式

1. 構(gòu)造器注入(Constructor Injection)

public class BookService {
    private final BookDao bookDao;
    public BookService(BookDao bookDao) {
        this.bookDao = bookDao;
    }
}

2. Setter 注入(Setter Injection)

public class BookService {
    private BookDao bookDao;
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
}

3. 字段注入(Field Injection)—— 使用@Autowired

public class BookService {
    @Autowired
    private BookDao bookDao;
}

?? 注意:字段注入雖然方便,但不利于測(cè)試和維護(hù),推薦使用構(gòu)造器注入。

三、@Autowired和@Value的區(qū)別

注解用途注入類型
@Autowired注入 Spring 容器中的 Bean 對(duì)象引用類型(如 Bean)
@Value注入基本類型、字符串、SpEL 表達(dá)式簡(jiǎn)單類型(如 String、int)

示例:

? 引用類型注入(用@Autowired)

public class BookService {
    @Autowired
    private BookDao bookDao; // 注入一個(gè) Bean
}

? 簡(jiǎn)單類型注入(用@Value)

public class AppConfig {
    @Value("com.mysql.jdbc.Driver")
    private String driver;
}

四、在@Bean方法中如何注入依賴?

你提到的這段代碼:

@Bean
public DataSource dataSource(BookDao bookDao) { // 引用類型直接添加形參
    ...
}

說(shuō)明:

  • 這是 基于 Java 配置類 的方式定義 Bean。
  • Spring 會(huì)自動(dòng)將BookDao類型的 Bean 注入進(jìn)來(lái)。
  • 不需要再寫 @Autowired,因?yàn)?Spring 會(huì)自動(dòng)根據(jù)類型進(jìn)行裝配。

五、總結(jié)

問題回答
什么是依賴注入?Spring 自動(dòng)幫你把需要的對(duì)象注入進(jìn)來(lái)
怎么使用?構(gòu)造器、Setter、字段注入(@Autowired
@Autowired 是干嘛的?注入引用類型(Bean)
@Value 是干嘛的?注入簡(jiǎn)單類型(字符串、數(shù)字等)
為什么 @Bean 方法里可以直接加形參?Spring 會(huì)根據(jù)類型自動(dòng)裝配
@Autowired 這里不能用嗎?@Bean 方法參數(shù)中不需要,因?yàn)?Spring 自動(dòng)裝配了

方法參數(shù)注入和@Autowired注入?yún)^(qū)別

  • 方法參數(shù)注入:用于在某個(gè)方法內(nèi)部臨時(shí)使用一個(gè) Bean,比如定義 @Bean。
  • @Autowired 字段注入:用于把 Bean 綁定到類中,整個(gè)類都可以用。

? 兩種引用類型依賴注入方式對(duì)比

方式注解使用位置說(shuō)明示例
構(gòu)造器/方法參數(shù)注入無(wú)(Spring 自動(dòng)裝配)@Bean 方法參數(shù) / 構(gòu)造器參數(shù)Spring 會(huì)根據(jù)類型自動(dòng)將依賴注入到方法參數(shù)中public DataSource dataSource(BookDao bookDao)
字段注入 / 成員變量注入@Autowired類成員變量Spring 會(huì)自動(dòng)將 Bean 注入到字段上@Autowired private BookDao bookDao;

?? 通俗理解

1.方法參數(shù)注入(如@Bean方法中)

@Bean
public DataSource dataSource(BookDao bookDao) {
    ...
}
  • Spring 會(huì)自動(dòng)把已經(jīng)注冊(cè)的BookDao Bean 注入到這個(gè)方法參數(shù)中。
  • 這是一種 臨時(shí)使用依賴 的方式,適合在配置類中定義 Bean 時(shí)使用。
  • 不需要 @Autowired,Spring 會(huì)自動(dòng)完成注入。

2.字段注入(使用@Autowired)

@Component
public class BookService {
    @Autowired
    private BookDao bookDao;
}
  • 這是 把依賴綁定到類本身,類的整個(gè)生命周期都可以使用這個(gè)依賴。
  • 適用于業(yè)務(wù)組件、Service、Controller 等類中。
  • 必須使用 @Autowired 來(lái)告訴 Spring 要注入什么。

https://github.com/0voice

到此這篇關(guān)于Java Spring的依賴注入理解及@Autowired用法示例詳解的文章就介紹到這了,更多相關(guān)spring依賴注入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java向MySQL添加中文數(shù)據(jù)數(shù)據(jù)庫(kù)顯示亂碼的解決方案

    Java向MySQL添加中文數(shù)據(jù)數(shù)據(jù)庫(kù)顯示亂碼的解決方案

    在用springboot做項(xiàng)目時(shí),由于重新安裝了本地Mysql數(shù)據(jù)庫(kù)(5.7版本)在前臺(tái)向數(shù)據(jù)庫(kù)插入和更新數(shù)據(jù)可的時(shí)候,涉及中文的時(shí)候在數(shù)據(jù)庫(kù)一直顯示異常,所以本文給大家介紹了相關(guān)的解決方案,需要的朋友可以參考下
    2024-02-02
  • IDEA 2020.2 +Gradle 6.6.1 + Spring Boot 2.3.4 創(chuàng)建多模塊項(xiàng)目的超詳細(xì)教程

    IDEA 2020.2 +Gradle 6.6.1 + Spring Boot 2.3.4 創(chuàng)建多模塊項(xiàng)目的超詳細(xì)教程

    這篇文章主要介紹了IDEA 2020.2 +Gradle 6.6.1 + Spring Boot 2.3.4 創(chuàng)建多模塊項(xiàng)目的教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Android 資源 id詳解及的動(dòng)態(tài)獲取

    Android 資源 id詳解及的動(dòng)態(tài)獲取

    這篇文章主要介紹了Android 資源 id詳解及的動(dòng)態(tài)獲取的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • IDEA?下?Gradle?刪除多余無(wú)用依賴的處理方法

    IDEA?下?Gradle?刪除多余無(wú)用依賴的處理方法

    這篇文章主要介紹了IDEA下Gradle刪除多余無(wú)用依賴,使用該插件可以一定程度上幫助我們刪除無(wú)用依賴,但是也可能會(huì)多刪除有用的依賴,需要在使用插件自動(dòng)修復(fù)后手動(dòng)檢測(cè)項(xiàng)目,驗(yàn)證是否會(huì)出現(xiàn)問題,避免導(dǎo)致上線發(fā)布錯(cuò)誤的負(fù)優(yōu)化
    2022-03-03
  • Spring Cloud服務(wù)入口Gateway的介紹和使用問題小結(jié)

    Spring Cloud服務(wù)入口Gateway的介紹和使用問題小結(jié)

    Spring Cloud Gateway是Spring Cloud的?個(gè)全新的API?關(guān)項(xiàng)?, 基于Spring + SpringBoot等技術(shù)開發(fā), ?的是為了替換掉Zuul,這篇文章主要介紹了Spring Cloud服務(wù)入口Gateway的介紹和使用問題小結(jié),需要的朋友可以參考下
    2025-03-03
  • java幾種排序算法的實(shí)現(xiàn)及簡(jiǎn)單分析

    java幾種排序算法的實(shí)現(xiàn)及簡(jiǎn)單分析

    這篇文章主要介紹了java幾種排序算法的實(shí)現(xiàn)及簡(jiǎn)單分析,實(shí)例分析了插入排序、希爾排序、選擇排序等常用排序算法,并分析了各個(gè)算法的優(yōu)劣,需要的朋友可以參考下
    2015-05-05
  • Spring Boot 整合單機(jī)websocket的步驟 附github源碼

    Spring Boot 整合單機(jī)websocket的步驟 附github源碼

    websocket 是一個(gè)通信協(xié)議,通過單個(gè) TCP 連接提供全雙工通信,這篇文章主要介紹了Spring Boot 整合單機(jī)websocket的步驟(附github源碼),需要的朋友可以參考下
    2021-10-10
  • SpringBoot之controller參數(shù)校驗(yàn)詳解

    SpringBoot之controller參數(shù)校驗(yàn)詳解

    介紹了Java中使用@Validated和@Valid進(jìn)行參數(shù)校驗(yàn)的方法,包括不同標(biāo)簽的使用場(chǎng)景、基本屬性和一些常用的注解類型,同時(shí),還討論了如何在控制器中使用這些校驗(yàn)標(biāo)簽,以及如何處理校驗(yàn)結(jié)果和自定義錯(cuò)誤消息,最后,還介紹了如何實(shí)現(xiàn)分組校驗(yàn)和嵌套校驗(yàn),并提供了一些示例代碼
    2024-11-11
  • 詳解Java設(shè)計(jì)模式編程中的依賴倒置原則

    詳解Java設(shè)計(jì)模式編程中的依賴倒置原則

    這篇文章主要介紹了詳解Java設(shè)計(jì)模式中的依賴倒置原則,針對(duì)面對(duì)對(duì)象編程中的抽象的運(yùn)用,需要的朋友可以參考下
    2016-02-02
  • Spring boot 總結(jié)之跨域處理cors的方法

    Spring boot 總結(jié)之跨域處理cors的方法

    本篇文章主要介紹了Spring boot 總結(jié)之跨域處理cors的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-02-02

最新評(píng)論

静安区| 苏尼特右旗| 阿鲁科尔沁旗| 湛江市| 和顺县| 湘西| 石景山区| 边坝县| 通许县| 大安市| 潞西市| 阳山县| 太湖县| 山丹县| 新兴县| 永寿县| 安丘市| 拉孜县| 平江县| 紫云| 德惠市| 平邑县| 微博| 丁青县| 台前县| 万山特区| 霍林郭勒市| 木里| 天气| 沙湾县| 临沧市| 田阳县| 尼勒克县| 花莲市| 通海县| 宁陵县| 青阳县| 贺兰县| 赣榆县| 攀枝花市| 炉霍县|