說到SpringBoot,大家可能最熟悉的就是:注解開發!自動裝配!微服務!可這些大家有沒有真正的去從底層了解過呢?今天,小編對自己的Springboot理解進行一個分享,同時也歡迎大家指正!
SpringBoot學習
- 一、原理決議
- 1.pom.xml
- 2.啟動器:
- 3.主程式:
- 4.注解挖掘!!!【重點】
- @ComponentScan
- @SpringBootConfiguration
- @EnableAutoConfiguration自動裝配
- 1.@AutoConfigurationPackage
- 2.@Import(AutoConfigurationImportSelector.class)
- 核心組態檔:
- 二、Run方法
一、原理決議
1.pom.xml
- spring-boot-dependencies:核心依賴在父工程中
- 我們在寫或者引入一些springboot依賴的時候,不需要指定版本,因為有版本倉庫

2.啟動器:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
- 啟動器:說白了就是springboot的啟動場景
- 比如我們啟動web,就可以匯入 spring-boot-starter-web,就會自動匯入web的依賴
- springboot會將所有功能場景,變成一個個的啟動器
- 如果我們要使用什么功能,只需要找到對應的啟動器就可以
3.主程式:
//@SpringBootApplication:標注這個類是一個springboot的應用
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
4.注解挖掘!!!【重點】
大家從啟動類上可以看出SpringBoot不像我們之前開發的那樣繁瑣,僅僅是一個SpringBoot注解就可以解決,那我們就來聊聊這個注解!

我們先從這里點進去看看:會發現里面核心會有這三個注解,那我們來一 一 看 看

@ComponentScan
這個注解比較好理解,掃描當前啟動類同級的包
我們在學習Spring的時候,應該也是接觸過的
@SpringBootConfiguration
當我們點開這個注解會發現一個熟悉的面孔:@Configuration
@Configuration 也是在Spring的學習中就遇見過
@Configuration用于定義配置類,類似于之前的xml組態檔,被注解的類內部包含有一個或多個被@Bean注解的方法,這些方法將會被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext類進行掃描,并用于構建bean定義,初始化Spring容器,

當我們再點進去@Configuration,會發現有一個熟悉的面孔:@Component
@Component:組件,放在類上,說明這個類被Spring管理了,就是bean!
等價于:<bean id="user" class="com.wdit.pojo.User"/>
@Component
public class User {
public String name = "喬治";
}

@EnableAutoConfiguration自動裝配
我們點進來發現,里面會有這樣兩個核心注解

1.@AutoConfigurationPackage

我們看一個這個類:代碼很多,但是理解一下就是
如果有這個Bean,就get
沒有,就new一個
說簡單了:就是自動注冊的一個表

2.@Import(AutoConfigurationImportSelector.class)
這個注解是自動裝配匯入包的核心!!!,這個類AutoConfigurationImportSelector,應該是一個包的選擇類,我們看看到底選擇了什么?
我們研究一下它的幾個方法:
方法一:

方法二:
大家看這個方法,先是loadFactoryNames加載一個類的名字,回傳一個集合
然后,注意message的資訊!!!
實際上這就是核心組態檔的位置

核心組態檔:

springboot所有的自動配置都是在啟動的時候掃描并加載:spring.factories所有的自動配置類都在這里面,但是不一定生效,要判斷條件是否成立,只有匯入對應的start,就有對應的啟動器了,有了啟動器,我們自動裝配就會生效,然后就會配置成功!!!
方法三:
這個方法是Spring工廠類的加載

二、Run方法
既然是run方法,我們就先看看它的類SpringApplication

SpringApplication類:
- 推斷應用的類是普通的專案還是web專案
- 查找并加載所有可用初始化器,設定到initializers屬性中
- 找出所有的應用程式監聽器,設定到listeners屬性中
- 推斷并設定main方法的定義類,找到運行的主類
核心就是用了JavaConfig

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/258717.html
標籤:java
