SpringBoot淺析依賴管理與自動(dòng)配置概念與使用
說明:基于atguigu學(xué)習(xí)筆記。部分內(nèi)容涉及上一章節(jié),請參考以下鏈接。
依賴管理
自動(dòng)版本仲裁
在上一節(jié)創(chuàng)建Spring Boot項(xiàng)目時(shí),看到,引入了一個(gè)父項(xiàng)目。如下:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version> </parent>
父項(xiàng)目的主要作用是依賴管理。父項(xiàng)目已經(jīng)聲明了很多需要的依賴及其版本,子項(xiàng)目如果繼承了父項(xiàng)目,則不需要再聲明版本號(也稱自動(dòng)版本仲裁)。除非你不需要父項(xiàng)目的版本號。
點(diǎn)擊查看父項(xiàng)目,可以看到,還有一個(gè)父項(xiàng)目是spring-boot-dependencies。如下:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.7.0</version> </parent>
再點(diǎn)進(jìn)去看到這個(gè)父項(xiàng)目維護(hù)了很多依賴的版本,如下:
<properties> <activemq.version>5.16.5</activemq.version> <antlr2.version>2.7.7</antlr2.version> <appengine-sdk.version>1.9.96</appengine-sdk.version> <artemis.version>2.19.1</artemis.version> <aspectj.version>1.9.7</aspectj.version> <assertj.version>3.22.0</assertj.version> <atomikos.version>4.0.6</atomikos.version> <awaitility.version>4.2.0</awaitility.version> <build-helper-maven-plugin.version>3.3.0</build-helper-maven-plugin.version> <byte-buddy.version>1.12.10</byte-buddy.version> <cache2k.version>2.6.1.Final</cache2k.version> <caffeine.version>2.9.3</caffeine.version> <cassandra-driver.version>4.14.1</cassandra-driver.version> <classmate.version>1.5.1</classmate.version> <commons-codec.version>1.15</commons-codec.version> <commons-dbcp2.version>2.9.0</commons-dbcp2.version> <commons-lang3.version>3.12.0</commons-lang3.version> <commons-pool.version>1.6</commons-pool.version> <commons-pool2.version>2.11.1</commons-pool2.version> <couchbase-client.version>3.3.0</couchbase-client.version> <db2-jdbc.version>11.5.7.0</db2-jdbc.version> <dependency-management-plugin.version>1.0.11.RELEASE</dependency-management-plugin.version> <derby.version>10.14.2.0</derby.version> <dropwizard-metrics.version>4.2.9</dropwizard-metrics.version> <ehcache.version>2.10.9.2</ehcache.version> <ehcache3.version>3.10.0</ehcache3.version> <elasticsearch.version>7.17.3</elasticsearch.version> <embedded-mongo.version>3.4.5</embedded-mongo.version> <!-- 等等還有很多 -->
如果不想要父項(xiàng)目的版本,引入依賴時(shí)可以自己定義版本號,如下:
<properties> <mysql.version>5.1.43</mysql.version> </properties>
starter啟動(dòng)器
上個(gè)章節(jié),引入依賴時(shí),只引入了spring-boot-starter-web這一個(gè)依賴。像這種spring-boot-starter-* 的依賴就是start啟動(dòng)器。他是一種場景的所有依賴集合描述,比如spring-boot-starter-web就是web開始所需要的所有依賴的集合描述。只要引入這一個(gè)依賴,就會(huì)把web開發(fā)場景所需要的依賴全都引入。
只要引入starter,這個(gè)場景的所有常規(guī)需要的依賴都自動(dòng)引入。
注意像這種spring-boot-starter-格式的啟動(dòng)器一般是官方提供的。也可以自己創(chuàng)建,官方建議,自己創(chuàng)建的格式是-spring-boot-starter,比如很多第三方提供的簡化開發(fā)的場景啟動(dòng)器。
自動(dòng)配置
上面我們看到,當(dāng)引入spring-boot-starter-web啟動(dòng)器的時(shí)候,spring boot會(huì)自動(dòng)幫我們做很多配置。
1.自動(dòng)引入Tomcat依賴并配好Tomcat。
2.自動(dòng)配好SpringMVC: 引入并配置好SpringMVC全套組件。
3.自動(dòng)配好Web常見功能,如:字符編碼問題。
4.配置好默認(rèn)的包結(jié)構(gòu): 主程序所在包及其下面的所有子包里面的組件都會(huì)被默認(rèn)掃描進(jìn)來, 想要改變掃描路徑,在@SpringBootApplication注解里使scanBasePackages屬性指定,或者使用@ComponentScan注解。
@SpringBootApplication注解源碼可以看到,@SpringBootApplication注解相當(dāng)于以下3個(gè)注解:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan(“com.example”)
5.各種配置分配了默認(rèn)值
6.按需加載所有自動(dòng)配置項(xiàng): 引入了哪些場景,這個(gè)場景的自動(dòng)配置才會(huì)開啟。SpringBoot所有的自動(dòng)配置功能都在 spring-boot-autoconfigure 包里面。
到此這篇關(guān)于SpringBoot淺析依賴管理與自動(dòng)配置概念與使用的文章就介紹到這了,更多相關(guān)SpringBoot依賴管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot自動(dòng)配置與啟動(dòng)流程詳細(xì)分析
- SpringBoot?DataSource數(shù)據(jù)源實(shí)現(xiàn)自動(dòng)配置流程詳解
- SpringBoot自動(dòng)配置源碼深入刨析講解
- SpringBoot使用@EnableAutoConfiguration實(shí)現(xiàn)自動(dòng)配置詳解
- SpringBoot自動(dòng)配置Quartz的實(shí)現(xiàn)步驟
- springboot自動(dòng)配置原理以及spring.factories文件的作用詳解
- Springboot 如何關(guān)閉自動(dòng)配置
- springboot排除某些自動(dòng)配置的操作方法
相關(guān)文章
Java中JSONObject和Map<String,?Object>的轉(zhuǎn)換方法
平時(shí)對接口時(shí),經(jīng)常遇到j(luò)son字符串和map對象之間的交互,這篇文章主要給大家介紹了關(guān)于Java中JSONObject和Map<String,?Object>的轉(zhuǎn)換方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07IntelliJ IDEA 構(gòu)建maven多模塊工程項(xiàng)目(詳細(xì)多圖)
這篇文章主要介紹了IntelliJ IDEA 構(gòu)建maven多模塊工程項(xiàng)目(詳細(xì)多圖),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06springboot實(shí)現(xiàn)瀏覽器截屏并添加文字
大家好,本篇文章主要講的是springboot實(shí)現(xiàn)瀏覽器截屏并添加文字,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-02-02win10 eclipse配置環(huán)境變量的教程圖解
本文通過圖文并茂的形式給大家介紹了win10 eclipse配置環(huán)境變量的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-07-07SpringBoot利用jackson格式化時(shí)間的三種方法
日常開發(fā)過程中經(jīng)常會(huì)使用json進(jìn)行數(shù)據(jù)的傳輸,這就涉及到了對象和json的相互轉(zhuǎn)化,常用的解決方案有:Jackson(推薦)、谷歌的Gson、阿里的Fastjson,這篇文章主要給大家介紹了關(guān)于SpringBoot如何利用jackson格式化時(shí)間的相關(guān)資料,需要的朋友可以參考下2021-06-06java 重載(overload)與重寫(override)詳解及實(shí)例
這篇文章主要介紹了java 重載(overload)與重寫(override)詳解及實(shí)例的相關(guān)資料,并附實(shí)例代碼,需要的朋友可以參考下2016-10-10