欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot自動裝配原理以及分析

 更新時間:2022年11月19日 16:32:44   作者:Dongguabai  
這篇文章主要介紹了SpringBoot自動裝配原理以及分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

先看看SpringBoot的主配置類

里面有一個main方法運行了一個run()方法,在run方法中必須要傳入一個被@SpringBootApplication注解的類。

@SpringBootApplication

SpringBoot應用標注在某個類上說明這個類是SpringBoot的主配置類,SpringBoot就會運行這個類的main方法來啟動SpringBoot項目。

那@SpringBootApplication注解到底是什么呢,點進去看看:

發(fā)現(xiàn)@SpringBootApplication是一個組合注解。

@SpringBootConfiguration

先看看@SpringBootConfiguration注解

這個注解很簡單,表明該類是一個Spring的配置類。

再進去看看@Configuration

說明Spring的配置類也是Spring的一個組件。

@EnableAutoConfiguration

這個注解是開啟自動配置的功能。

先看看@AutoConfigurationPackage注解

這個注解是自動配置包,主要是使用的@Import來給Spring容器中導入一個組件 ,這里導入的是Registrar.class。

來看下這個Registrar

就是通過這個方法獲取掃描的包路徑,可以debug看看:

在這行代碼上打了一個斷點

啟動項目

進入斷點處

看看能否獲取掃描的包路徑

已經(jīng)獲取到了包路徑

那那個metadata是什么呢?

可以看到是標注在@SpringBootApplication注解上的DemosbApplication,也就是我們的主配置類:

說白了就是將主配置類(即@SpringBootApplication標注的類)的所在包及子包里面所有組件掃描加載到Spring容器。

所以包名一定要注意。

現(xiàn)在包掃描路徑獲取到了,那具體加載哪些組件呢,看看下面這個注解。

@Import({AutoConfigurationImportSelector.class})

@Import注解就是給Spring容器中導入一些組件,這里傳入了一個組件的選擇器:AutoConfigurationImportSelector。

里面有一個selectImports方法,將所有需要導入的組件以全類名的方式返回;這些組件就會被添加到容器中。

debug運行看看

會給容器中導入非常多的自動配置類(xxxAutoConfiguration);就是給容器中導入這個場景需要的所有組件,并配置好這些組件:

有了自動配置類,免去了我們手動編寫配置注入功能組件等的工作。

那他是如何獲取到這些配置類的呢,看看上面這個方法:

會從META-INF/spring.factories中獲取資源,然后通過Properties加載資源:

Spring Boot在啟動的時候從類路徑下的META-INF/spring.factories中獲取EnableAutoConfiguration指定的值,將這些值作為自動配置類導入到容器中,自動配置類就生效,幫我們進行自動配置工作。

以前我們需要自己配置的東西,自動配置類都幫我們完成了。

J2EE的整體整合解決方案和自動配置都在spring-boot-autoconfigure-2.0.3.RELEASE.jar:

比如看看WebMvcAutoConfiguration

都已經(jīng)幫我們配置好了,我們不用再單獨配置了:

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

相關文章

  • Java中printStackTrace()用法示例

    Java中printStackTrace()用法示例

    這篇文章主要給大家介紹了關于Java中printStackTrace()用法的相關資料,printStackTrace()方法一般與拋出異常搭配使用,效果是打印出異常位置,需要的朋友可以參考下
    2024-05-05
  • Java支持方法重載的原因

    Java支持方法重載的原因

    今天給大家?guī)淼氖顷P于Java的相關知識,文章圍繞著Java方法重載展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Java遍歷Map四種方式講解

    Java遍歷Map四種方式講解

    這篇文章主要介紹了Java遍歷Map四種方式講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • 詳解spring+springmvc+mybatis整合注解

    詳解spring+springmvc+mybatis整合注解

    本篇文章主要介紹了詳解spring+springmvc+mybatis整合注解,詳細的介紹了ssm框架的使用,具有一定的參考價值,有興趣的可以了解一下
    2017-04-04
  • Java 如何優(yōu)雅的拋出業(yè)務異常

    Java 如何優(yōu)雅的拋出業(yè)務異常

    這篇文章主要介紹了Java 如何優(yōu)雅的拋出業(yè)務異常,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • springboot如何查找配置文件路徑的順序和其優(yōu)先級別

    springboot如何查找配置文件路徑的順序和其優(yōu)先級別

    此文是在工作中遇到的關于springboot配置文件的問題,在網(wǎng)上查閱資料和自己測試之后記錄的,以便日后查閱。希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 詳解Spring-Boot中如何使用多線程處理任務

    詳解Spring-Boot中如何使用多線程處理任務

    本篇文章主要介紹了詳解Spring-Boot中如何使用多線程處理任務,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Spring Cloud gateway 網(wǎng)關如何攔截Post請求日志

    Spring Cloud gateway 網(wǎng)關如何攔截Post請求日志

    這篇文章主要介紹了Spring Cloud gateway 網(wǎng)關如何攔截Post請求日志的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 一篇文章帶你玩轉JAVA單鏈表

    一篇文章帶你玩轉JAVA單鏈表

    這篇文章主要為大家詳細介紹了Java實現(xiàn)帶頭結點的單鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • MyBatis中${}?和?#{}?有什么區(qū)別小結

    MyBatis中${}?和?#{}?有什么區(qū)別小結

    ${}?和?#{}?都是?MyBatis?中用來替換參數(shù)的,它們都可以將用戶傳遞過來的參數(shù),替換到?MyBatis?最終生成的?SQL?中,但它們區(qū)別卻是很大的,今天通過本文介紹下MyBatis中${}?和?#{}?有什么區(qū)別,感興趣的朋友跟隨小編一起看看吧
    2022-11-11

最新評論