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

SpringBoot加載啟動的源碼解析

 更新時間:2023年12月31日 08:49:46   作者:_Romeo  
這篇文章主要介紹了SpringBoot加載啟動的源碼解析,@SpringBootApplication注解是Spring Boot的核心注解,它其實是一個組合注解,本身其實也是一個IoC容器的配置類,需要的朋友可以參考下

前言

@SpringBootApplication注解是Spring Boot的核心注解,它其實是一個組合注解:

在這里插入圖片描述

  • @Configuration(@SpringBootConfiguration點開查看發(fā)現(xiàn)里面還是應用了@Configuration)
  • @EnableAutoConfiguration
  • @ComponentScan
    即 @SpringBootApplication = (默認屬性)@Configuration + @EnableAutoConfiguration + @ComponentScan。
    所以,如果我們使用如下的SpringBoot啟動類,整個SpringBoot應用依然可以與之前的啟動類功能對等:
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {
public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
		}
}

1、@Configuration

這里的@Configuration對我們來說不陌生,它就是JavaConfig形式的Spring Ioc容器的配置類使用的那個@Configuration,SpringBoot社區(qū)推薦使用基于JavaConfig的配置形式,所以,這里的啟動類標注了@Configuration之后,本身其實也是一個IoC容器的配置類。

任何一個標注了@Configuration的Java類定義都是一個JavaConfig配置類。

任何一個標注了@Bean的方法,其返回值將作為一個bean定義注冊到Spring的IoC容器,方法名將默認成該bean定義的id。

@Configuration:提到@Configuration就要提到他的搭檔@Bean。使用這兩個注解就可以創(chuàng)建一個簡單的spring配置類,可以用來替代相應的xml配置文件。

@Configuration的注解類標識這個類可以使用Spring IoC容器作為bean定義的來源。 @Bean注解告訴Spring,一個帶有@Bean的注解方法將返回一個對象,該對象應該被注冊為在Spring應用程序上下文中的bean。

2、@ComponentScan

@ComponentScan這個注解在Spring中很重要,它對應XML配置中的元素,@ComponentScan的功能其實就是自動掃描并加載符合條件的組件(比如@Component和@Repository等)或者bean定義,最終將這些bean定義加載到IoC容器中。

我們可以通過basePackages等屬性來細粒度的定制@ComponentScan自動掃描的范圍,如果不指定,則默認Spring框架實現(xiàn)會從聲明@ComponentScan所在類的package進行掃描。

【注】:所以SpringBoot的啟動類最好是放在root package下,因為默認不指定basePackages

3、@EnableAutoConfiguration

  • 個人感覺 @EnableAutoConfiguration這個Annotation最為重要,所以放在最后來解讀,大家是否還記得Spring框架提供的各種名字為@Enable開頭的Annotation定義?
  • 比如@EnableScheduling、@EnableCaching、@EnableMBeanExport等
  • @EnableAutoConfiguration的理念和做事方式其實一脈相承,簡單概括一下就是,借助@Import的支持,收集和注冊特定場景相關的bean定義。
  • @EnableScheduling是通過@Import將Spring調度框架相關的bean定義都加載到IoC容器。
  • @EnableMBeanExport是通過@Import將JMX相關的bean定義加載到IoC容器。
  • 而@EnableAutoConfiguration也是借助@Import的幫助,將所有符合自動配置條件的bean定義加載到IoC容器,僅此而已!

4、總結

其實啟動的主要過程都在new SpringApplication().run();

  • new SpringApplication():創(chuàng)建SpringApplication實例,負責加載配置一些基本的環(huán)境變量、資源、構造器、監(jiān)聽器
  • run():負責springboot整個啟動過程,包括加載創(chuàng)建環(huán)境、打印banner、配置文件、配置應用上下文,加載bean等等sb整個生命周期幾乎都在run方法中;

到此這篇關于SpringBoot加載啟動的源碼解析的文章就介紹到這了,更多相關SpringBoot加載啟動內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spring加載XSD文件發(fā)生錯誤的解決方法

    Spring加載XSD文件發(fā)生錯誤的解決方法

    這篇文章主要介紹了Spring加載XSD文件發(fā)生錯誤的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • java web實現(xiàn)網上手機銷售系統(tǒng)

    java web實現(xiàn)網上手機銷售系統(tǒng)

    這篇文章主要為大家詳細介紹了java web實現(xiàn)網上手機銷售系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • JAVA查詢MongoDB的幾種方法小結

    JAVA查詢MongoDB的幾種方法小結

    本文主要介紹了JAVA查詢MongoDB的幾種方法小結,通過閱讀本文,讀者可以了解如何使用Java查詢MongoDB,并在實際應用中應用這些技能,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Java使用ReentrantLock進行加解鎖的示例代碼

    Java使用ReentrantLock進行加解鎖的示例代碼

    在多線程編程中,為了確保多個線程在訪問共享資源時不會發(fā)生沖突,我們通常需要使用 鎖 來同步對資源的訪問,本文將深入探討如何優(yōu)雅地使用 ReentrantLock,避免常見的坑點,并提升代碼的可維護性,需要的朋友可以參考下
    2025-04-04
  • SpringCloud微服務續(xù)約實現(xiàn)源碼分析詳解

    SpringCloud微服務續(xù)約實現(xiàn)源碼分析詳解

    這篇文章主要介紹了SpringCloud微服務續(xù)約實現(xiàn)源碼分析,服務續(xù)期和服務注冊非常相似,服務注冊在Eureka?Client程序啟動之后開啟,并同時開啟服務續(xù)期的定時任務
    2022-11-11
  • SpringBoot?Application核心注解詳解

    SpringBoot?Application核心注解詳解

    進入到@SpringBootApplication的源碼,可以看到里面組合了三個我們感興趣的注解@ComponentScan、@EnableAutoConfiguration、@SpringBootConfiguration,我們一一分析這三個注解
    2022-10-10
  • JavaWeb項目中dll文件動態(tài)加載方法解析(詳細步驟)

    JavaWeb項目中dll文件動態(tài)加載方法解析(詳細步驟)

    這篇文章主要介紹了JavaWeb項目中dll文件動態(tài)加載方法,步驟詳細,在這里分享給大家,需要的朋友可以了解下。
    2017-09-09
  • 關于Elasticsearch封裝公共索引增刪改查

    關于Elasticsearch封裝公共索引增刪改查

    索引是Elasticsearch中存儲數(shù)據(jù)的邏輯單元,類似于關系數(shù)據(jù)庫中的表,它包含多個文檔,每個文檔都是一個結構化的JSON數(shù)據(jù)格式,在實際應用中,索引的使用與配置可以依據(jù)不同的方案進行,例如在Spring Boot項目中,可以選擇自動配置或者手動編寫配置類
    2024-10-10
  • Spring與Struts整合之使用自動裝配操作示例

    Spring與Struts整合之使用自動裝配操作示例

    這篇文章主要介紹了Spring與Struts整合之使用自動裝配操作,結合實例形式詳細分析了Spring與Struts整合使用自動裝配具體操作步驟與相關實現(xiàn)技巧,需要的朋友可以參考下
    2020-01-01
  • Spring依賴注入中的@Resource與@Autowired詳解

    Spring依賴注入中的@Resource與@Autowired詳解

    這篇文章主要介紹了Spring依賴注入中的@Resource與@Autowired詳解,提到Spring依賴注入,大家最先想到應該是@Resource和@Autowired,對于Spring為什么要支持兩個這么類似的注解卻未提到,屬于知其然而不知其所以然,本文就來做詳細講解,需要的朋友可以參考下
    2023-09-09

最新評論

孙吴县| 白沙| 电白县| 伊通| 龙口市| 乌兰察布市| 准格尔旗| 乌拉特中旗| 娄烦县| 瑞昌市| 临猗县| 自贡市| 辽阳市| 金平| 鹿泉市| 屏山县| 湛江市| 九寨沟县| 崇文区| 临夏市| 木兰县| 卢龙县| 成安县| 三都| 桐柏县| 班玛县| 乌兰察布市| 盘山县| 河池市| 元阳县| 安新县| 青田县| 凤城市| 宝山区| 威海市| 涿州市| 阿坝县| 景洪市| 井研县| 开原市| 容城县|