SpringBoot超詳細(xì)講解自動配置原理
SpringBoot自動配置原理
了解SpringBoot自動配置原理
1.SpringBoot特點
2.容器功能
3.自動配置原理入門
4.開發(fā)技巧
SpringBoot特點
1.依賴管理
A.父項目做依賴管理
父項目做依賴管理作用:是控制導(dǎo)入的依賴版本號
父項目管理
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.7</version>
</parent>上面的父項目是:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.6.7</version>
</parent>所以:幾乎聲明了所有開發(fā)中常用的依賴的版本號,自動版本仲裁機(jī)制
父項目管理的作用是:引入的依賴的認(rèn)都可以不寫版本,會自動版本號仲裁機(jī)制,但是引入非版本仲裁的依賴時,需要寫版本號
B.開發(fā)導(dǎo)入starter場景啟動器
starter場景啟動器的作用就是引入所有相關(guān)依賴,而父項目管理就是控制依賴的版本號
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>1、見到很多 spring-boot-starter-* : *就某種場景
2、只要引入starter,這個場景的所有常規(guī)需要的依賴我們都自動引入
3、SpringBoot所有支持的場景【參考下面地址】
https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter
4、見到的 *-spring-boot-starter: 第三方為我們提供的簡化開發(fā)的場景啟動器。
5、所有場景啟動器最底層的依賴【也就是核心依賴】
C.可以修改默認(rèn)版本號
當(dāng)版本仲裁的版本號不符合我們的開發(fā)要求時,可以修改默認(rèn)的版本號
第一步:先查詢父項目管理的版本號
第二步:使用properties版本號覆蓋仲裁版本號
第三步:引入依賴
例如:
步驟1、查看spring-boot-dependencies里面規(guī)定當(dāng)前依賴的版本 用的 key。
步驟2、在當(dāng)前項目里面重寫配置
<properties>
<mysql.version>5.1.43</mysql.version>
</properties>步驟3:
<dependencys>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencys>
2.自動配置
A.自動配好Tomcat
第一步:引入Tomcat依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.3.4.RELEASE</version>
<scope>compile</scope>
</dependency>
第二步:配置Tomcat服務(wù)器
B.自動配好SpringMVC
第一步:引入SpringMVC全套組件
第二步:自動配置好SpringMVC常用組件功能,如:注冊過濾器[字符編碼問題],前端控制器,視圖解析器,文件上傳解析器,異常處理組件 ,攔截器等等。
SpringBoot幫我們配置好了所有web開發(fā)的常見場景
C.默認(rèn)的包結(jié)構(gòu)
在主程序下的所有包及其下面的所有子包里面的組件都會默認(rèn)掃描進(jìn)來,無需以前的包掃描配置
如:主要按照下面的主程序結(jié)構(gòu)就能默認(rèn)掃描到

案例:

如果需要改變默認(rèn)掃描配置的兩種方式:
方式一:在@SpringBootApplication注解中的scanBasePackages屬性設(shè)置掃描配置
@SpringBootApplication(scanBasePackages={"com.haikang"})
方式二:使用另外的三個注解,代替@SpringBootApplication注解,并在@ComponentScan注解中指定掃描路徑
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.haikang")
D.各種配置擁有默認(rèn)值
- 默認(rèn)配置最終都是映射到相關(guān)指定的類上,如:MultipartProperties文件上傳默認(rèn)配置類
- 配置文件的值最終綁定指定類上,這個類會在容器中創(chuàng)建對象
E.按需要加載所有自動配置項
- 由于有非常多的starter,是引入了哪些場景這個場景的自動配置才會開戶
- SpringBoot所有的自動配置功能都在spring-boot-autoconfigure包里面
到此這篇關(guān)于SpringBoot超詳細(xì)講解自動配置原理的文章就介紹到這了,更多相關(guān)SpringBoot自動配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決struts2 攔截器修改request的parameters參數(shù)失敗的問題
這篇文章主要介紹了解決struts2 攔截器修改request的parameters參數(shù)失敗的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Java 多線程Synchronized和Lock的區(qū)別
這篇文章主要介紹了Java 多線程Synchronized和Lock的區(qū)別,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2021-01-01
SpringBoot設(shè)置首頁(默認(rèn)頁)跳轉(zhuǎn)功能的實現(xiàn)方案
這篇文章主要介紹了SpringBoot設(shè)置首頁(默認(rèn)頁)跳轉(zhuǎn)功能,本文通過兩種方案,給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-07-07
java使用EasyExcel導(dǎo)入導(dǎo)出excel
導(dǎo)入導(dǎo)出excel數(shù)據(jù)是常見的需求,今天就來看一下Java基于EasyExcel實現(xiàn)這個功能,感興趣的朋友可以了解下2021-05-05

