一、前言Springboot的自動(dòng)配置原理,面試中經(jīng)常問到,一直看也記不住,不如手寫一個(gè)starter,加深一下記憶 。看了之后發(fā)現(xiàn)大部分的starter都是這個(gè)原理,實(shí)踐才會記憶深刻 。核心思想:約定大于配置 。
二、初探starter啟動(dòng)原理我們直接看看官網(wǎng)的starter是怎么設(shè)計(jì)的,仿照這寫一個(gè)就行了!
我們Ctrl點(diǎn)擊<artifactId>spring-boot-starter-web</artifactId>,進(jìn)入內(nèi)部pom,我們發(fā)現(xiàn)里面有個(gè)
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.5.3</version><scope>compile</scope></dependency>在此Ctrl點(diǎn)擊<artifactId>spring-boot-starter</artifactId>進(jìn)入starter內(nèi)部pom:我們發(fā)現(xiàn)之后干活的就是這個(gè)包依賴:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId><version>2.5.3</version><scope>compile</scope></dependency>

文章插圖
我們現(xiàn)在創(chuàng)建兩個(gè)項(xiàng)目即可:
- spring-boot-starter(啟動(dòng)器)
- spring-boot-starter-autoconfigure(自動(dòng)配置包)
您應(yīng)該確保為您的啟動(dòng)器提供適當(dāng)?shù)拿臻g 。不要以 . 開頭的模塊名稱spring-boot,即使您使用不同的 Maven groupId 。我們將來可能會為您自動(dòng)配置的內(nèi)容提供官方支持 。根據(jù)經(jīng)驗(yàn),您應(yīng)該在啟動(dòng)器之后命名組合模塊 。例如,假設(shè)您正在為“acme”創(chuàng)建一個(gè)啟動(dòng)器,并且您命名自動(dòng)配置模塊acme-spring-boot和啟動(dòng)器acme-spring-boot-starter 。如果您只有一個(gè)模塊將兩者結(jié)合起來,請將其命名為acme-spring-boot-starter.三、項(xiàng)目搭建1. 新建空白項(xiàng)目

文章插圖
輸入總的項(xiàng)目名稱

文章插圖
在空白項(xiàng)目里新建兩個(gè),這里可以分開單獨(dú)建立,這里小編跟著雷神一樣了,就不單獨(dú)建立項(xiàng)目了!!

文章插圖
2. 新建maven項(xiàng)目

文章插圖
包名和名稱:

文章插圖
3. 新建springboot項(xiàng)目

文章插圖
4. 項(xiàng)目架構(gòu)這里把沒有用的都刪除了!!可以不刪

文章插圖
四、配置1. 在starter項(xiàng)目中引入自己的autoconfigure依賴就是上面建立項(xiàng)目的設(shè)置的
<dependencies><dependency><groupId>com.wang</groupId><artifactId>spring-boot-autoconfigure</artifactId><version>0.0.1-SNAPSHOT</version></dependency></dependencies>
文章插圖
2. spring-boot-autoconfigure pom配置
<properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.3.7.RELEASE</spring-boot.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>${spring-boot.version}</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version></dependency></dependencies>
經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Docker | 容器互聯(lián)互通
- 網(wǎng)關(guān)、子網(wǎng)地址 Docker | 自定義網(wǎng)絡(luò)
- 手寫編程語言-如何為 GScript 編寫標(biāo)準(zhǔn)庫
- SpringBoot 自定義注解 實(shí)現(xiàn)多數(shù)據(jù)源
- 怎樣設(shè)置蘋果手機(jī)鈴聲(ios自定義來電鈴聲)
- 自己動(dòng)手寫ls命令——Java版
- 魅族mx5的通知欄可以自定義嗎
- 自定義ListView下拉刷新上拉加載更多
- 自定義View6 -塔防小游戲:第三篇防御塔隨意放置+多組野怪
- 自定義映射resultMap
