SpringBoot超詳細(xì)講解自動(dòng)配置原理
SpringBoot自動(dòng)配置原理
了解SpringBoot自動(dòng)配置原理
1.SpringBoot特點(diǎn)
2.容器功能
3.自動(dòng)配置原理入門(mén)
4.開(kāi)發(fā)技巧
SpringBoot特點(diǎn)
1.依賴(lài)管理
A.父項(xiàng)目做依賴(lài)管理
父項(xiàng)目做依賴(lài)管理作用:是控制導(dǎo)入的依賴(lài)版本號(hào)
父項(xiàng)目管理
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> </parent>
上面的父項(xiàng)目是:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.6.7</version> </parent>
所以:幾乎聲明了所有開(kāi)發(fā)中常用的依賴(lài)的版本號(hào),自動(dòng)版本仲裁機(jī)制
父項(xiàng)目管理的作用是:引入的依賴(lài)的認(rèn)都可以不寫(xiě)版本,會(huì)自動(dòng)版本號(hào)仲裁機(jī)制,但是引入非版本仲裁的依賴(lài)時(shí),需要寫(xiě)版本號(hào)
B.開(kāi)發(fā)導(dǎo)入starter場(chǎng)景啟動(dòng)器
starter場(chǎng)景啟動(dòng)器的作用就是引入所有相關(guān)依賴(lài),而父項(xiàng)目管理就是控制依賴(lài)的版本號(hào)
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
1、見(jiàn)到很多 spring-boot-starter-* : *就某種場(chǎng)景
2、只要引入starter,這個(gè)場(chǎng)景的所有常規(guī)需要的依賴(lài)我們都自動(dòng)引入
3、SpringBoot所有支持的場(chǎng)景【參考下面地址】
https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter
4、見(jiàn)到的 *-spring-boot-starter: 第三方為我們提供的簡(jiǎn)化開(kāi)發(fā)的場(chǎng)景啟動(dòng)器。
5、所有場(chǎng)景啟動(dòng)器最底層的依賴(lài)【也就是核心依賴(lài)】
C.可以修改默認(rèn)版本號(hào)
當(dāng)版本仲裁的版本號(hào)不符合我們的開(kāi)發(fā)要求時(shí),可以修改默認(rèn)的版本號(hào)
第一步:先查詢(xún)父項(xiàng)目管理的版本號(hào)
第二步:使用properties版本號(hào)覆蓋仲裁版本號(hào)
第三步:引入依賴(lài)
例如:
步驟1、查看spring-boot-dependencies里面規(guī)定當(dāng)前依賴(lài)的版本 用的 key。
步驟2、在當(dāng)前項(xiàng)目里面重寫(xiě)配置
<properties> <mysql.version>5.1.43</mysql.version> </properties>
步驟3:
<dependencys> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencys>
2.自動(dòng)配置
A.自動(dòng)配好Tomcat
第一步:引入Tomcat依賴(lài)
<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.自動(dòng)配好SpringMVC
第一步:引入SpringMVC全套組件
第二步:自動(dòng)配置好SpringMVC常用組件功能,如:注冊(cè)過(guò)濾器[字符編碼問(wèn)題],前端控制器,視圖解析器,文件上傳解析器,異常處理組件 ,攔截器等等。
SpringBoot幫我們配置好了所有web開(kāi)發(fā)的常見(jiàn)場(chǎng)景
C.默認(rèn)的包結(jié)構(gòu)
在主程序下的所有包及其下面的所有子包里面的組件都會(huì)默認(rèn)掃描進(jìn)來(lái),無(wú)需以前的包掃描配置
如:主要按照下面的主程序結(jié)構(gòu)就能默認(rèn)掃描到
案例:
如果需要改變默認(rèn)掃描配置的兩種方式:
方式一:在@SpringBootApplication注解中的scanBasePackages屬性設(shè)置掃描配置
@SpringBootApplication(scanBasePackages={"com.haikang"})
方式二:使用另外的三個(gè)注解,代替@SpringBootApplication注解,并在@ComponentScan注解中指定掃描路徑
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.haikang")
D.各種配置擁有默認(rèn)值
- 默認(rèn)配置最終都是映射到相關(guān)指定的類(lèi)上,如:MultipartProperties文件上傳默認(rèn)配置類(lèi)
- 配置文件的值最終綁定指定類(lèi)上,這個(gè)類(lèi)會(huì)在容器中創(chuàng)建對(duì)象
E.按需要加載所有自動(dòng)配置項(xiàng)
- 由于有非常多的starter,是引入了哪些場(chǎng)景這個(gè)場(chǎng)景的自動(dòng)配置才會(huì)開(kāi)戶(hù)
- SpringBoot所有的自動(dòng)配置功能都在spring-boot-autoconfigure包里面
到此這篇關(guān)于SpringBoot超詳細(xì)講解自動(dòng)配置原理的文章就介紹到這了,更多相關(guān)SpringBoot自動(dòng)配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring?Boot整合阿里開(kāi)源中間件Canal實(shí)現(xiàn)數(shù)據(jù)增量同步
這篇文章主要為大家介紹了Spring?Boot整合阿里開(kāi)源中間件Canal實(shí)現(xiàn)數(shù)據(jù)增量同步示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06

mybatis判斷l(xiāng)ist不為空/大小的問(wèn)題

java實(shí)現(xiàn)簡(jiǎn)單的驗(yàn)證碼功能

SSH框架網(wǎng)上商城項(xiàng)目第9戰(zhàn)之添加和更新商品類(lèi)別功能實(shí)現(xiàn)

zuulGateway 通過(guò)filter統(tǒng)一修改返回值的操作