成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

SpringBoot自動裝配原理-創(chuàng)新互聯(lián)

Spring Boot 是一個可以輕松創(chuàng)建獨立的、生產(chǎn)級的基于 Spring 的應(yīng)用程序的框架,Spring Boot 框架將 Spring、MyBatis、SpringMVC 中的一系列配置進行了簡化,只需要使用最簡單的配置和注解就能快速開發(fā)應(yīng)用程序。通過官網(wǎng)提供的 Spring Initializr 插件可以快速生成 Spring Boot 應(yīng)用。

網(wǎng)站設(shè)計制作過程拒絕使用模板建站;使用PHP+MYSQL原生開發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺管理系統(tǒng);成都做網(wǎng)站、成都網(wǎng)站制作收費合理;免費進行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運營了10多年的創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司。

什么是自動裝配
Spring Boot 相比于 Spring 的一個很大進步點在于不用再手動配置一系列配置文件,Spring Boot 提供了配置應(yīng)用程序和框架所需要的基本配置,這就是自動配置。

Spring Boot 啟動器
Spring Boot 中的一系列啟動器是自動裝配的最佳實踐。比如當引入了一個 spring-boot-starter-web 依賴:

org.springframework.bootspring-boot-starter-web

Spring Boot 框架就會自動引入 web 環(huán)境所有的依賴,并且自動配置,Spring Boot 將所有的功能場景,都變成一個個啟動器,想要用什么功能,只需要找到對應(yīng)的啟動器就可以了。

Spring Boot 的所有啟動器可以在官網(wǎng)https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter中找到,下圖是所有啟動器中的一小部分:

在這里插入圖片描述

自動裝配原理分析

Spring Boot 的主程序也可以稱為啟動類,這是開啟 Spring Boot 項目的入口。查看源代碼推薦使用 IDEA。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringbootdemoApplication {public static void main(String[] args) {SpringApplication.run(SpringbootdemoApplication.class, args);
  }
}

@SpringBootApplication 注解標注這個類是一個 SpringBoot 的啟動類,這個注解也是自動裝配的核心。

在這里插入圖片描述

@Target、Retention、Documented、Inherited 四個注解是標準的元注解,核心在于@SpringBootConfiguration和@EnableAutoConfiguration這兩個注解。

通過繼續(xù)進入注解內(nèi)部,可以將@SpringBootConfiguration和@EnableAutoConfiguration這兩個注解的結(jié)構(gòu)表示出來:

@SpringBootConfiguration : Spring Boot 的配置
    @Configuration : Spring 配置類
        @Component : Spring 的組件
@EnableAutoConfiguration : 自動配置
    @AutoConfigurationPackage : 自動配置包
        @Import({Registrar.class}) : 自動配置包注冊
        @Import({AutoConfigurationImportSelector.class}) : 導入選擇器

@SpringBootConfiguration 聲明了這個類為 SpringBoot 的組件,@EnableAutoConfiguration 是自動配置的核心,其中@AutoConfigurationPackage 對配置包冊,AutoConfigurationImportSelector 類來進行自動裝配。

繼續(xù)來看看 AutoConfigurationImportSelector 這個類

在這里插入圖片描述

  1. 引入環(huán)境。

  2. 引入 bean 加載器。

  3. 引入資源加載器。

  4. 配置導入。

繼續(xù)向下看,selectImports 中 的getAutoConfigurationEntry 方法第 123 行代碼將所有的配置通過 getCandidateConfigurations 方法放進一個 List 集合中

在這里插入圖片描述

繼續(xù)進入 getCandidateConfigurations 方法,這個配置獲取的路徑是 EnableAutoConfiguration.class,也就是@SpringBootApplication 所依賴的兩個重要注解的其中一個。這段代碼最終想表達的意思是將啟動類下的所有配置都導入。

在這里插入圖片描述

進入 LoadFactoryNames 或者就從 Assert.notEmpty 的信息中,可以發(fā)現(xiàn)這些配置來自于 META-INF/spring.factories 中,從 jar 包中可以查看到具體的目錄結(jié)構(gòu)

在這里插入圖片描述
在 spring.factories 文件中存在大量 xxxAutoConfiguration,這個文件記錄了所有 starter 的自動裝配類,就是這些類在容器中導入了場景需要的所有組件;并通過 @Configuration 自動配置

在這里插入圖片描述
通過一張圖來總結(jié)一下自動裝配的原理,通過上面對源碼的分析,可以看出 SpringBoot 所有的自動配置都在啟動類中被掃描和加載。所有的自動配置類都在 spring.properties 中。

在這里插入圖片描述
自動裝配總結(jié)起來可以分為以下幾步:

  1. Spring Boot 在啟動的時候,從類路徑下/META-INF/spring.factories 獲取指定的值;

  2. 將這些自動配置的類導入容器,自動配置就會生效,進行自動配置!

  3. 以前我們需要自動配置的東西,現(xiàn)在 Spring Boot 幫我們做了

  4. 自動配置的東西都在 spring-boot-autoconfigure.jar 這個包下

  5. 它會把所有需要導入的組件,以類名的方式返回,這些組件就會被添加到容器;

  6. 容器中也會存在非常多的 xxxAutoConfiguration
    的類(@Bean),就是這些類給容器中導入了這個場景需要的所有組件;并通過@Configuration 自動配置。

  7. 有了自動配置類,免去了我們手動編寫配置文件的步驟。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁標題:SpringBoot自動裝配原理-創(chuàng)新互聯(lián)
鏈接分享:http://jinyejixie.com/article2/djsgoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機標簽優(yōu)化、網(wǎng)站建設(shè)建站公司、小程序開發(fā)、手機網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
和平区| 保康县| 海城市| 全椒县| 积石山| 河曲县| 海丰县| 灵山县| 西畴县| 阿克苏市| 丹棱县| 连州市| 徐闻县| 娄底市| 彭泽县| 绥中县| 姚安县| 秭归县| 南汇区| 寻甸| 乐都县| 新郑市| 西畴县| 调兵山市| 东兰县| 尼勒克县| 蒙阴县| 天峨县| 呼图壁县| 突泉县| 社旗县| 镇康县| 昔阳县| 通州区| 徐汇区| 泰安市| 宁德市| 太仆寺旗| 房产| 宝清县| 中阳县|