您好,登錄后才能下訂單哦!
這篇文章主要介紹“SpringBoot依賴管理源碼分析”的相關(guān)知識(shí),小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“SpringBoot依賴管理源碼分析”文章能幫助大家解決問題。
我們創(chuàng)建項(xiàng)目時(shí)添加的依賴并沒有幫我們指定版本號(hào)<>,那SpringBoot是如何來指定版本賬號(hào)的呢?
現(xiàn)在我們來剝析一下SpringBoot的父依賴啟動(dòng)器<>
<!-- SpringBoot父項(xiàng)目依賴管理--> <parent> <artifactId>spring-boot-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>2.2.9.RELEASE</version> <relativePath/> <!-- 查看本地倉庫的源碼 --> </parent>
鼠標(biāo)指針停留在spring-boot-parent上Ctrl + 鼠標(biāo)左鍵點(diǎn)擊進(jìn)去,我們來看看這個(gè)父依賴啟動(dòng)器負(fù)責(zé)什么工作:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${revision}</version> <relativePath>../spring-boot-dependencies</relativePath> </parent>
首先進(jìn)去發(fā)現(xiàn):這個(gè)父依賴啟動(dòng)器有一個(gè)爸爸<>,如上!這個(gè)我們后面深入剝析?。。?/p>
然后接下看
<properties> <main.basedir>${basedir}/../..</main.basedir> <disable.checks>false</disable.checks> <git.url>https://github.com/spring-projects/spring-boot</git.url> <git.connection>scm:git:git://github.com/spring-projects/spring-boot.git</git.connection> <git.developerConnection>scm:git:ssh://git@github.com/spring-projects/spring-boot.git</git.developerConnection> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.version>3.5.4</maven.version> <maven-resolver.version>1.1.1</maven-resolver.version> <spock.version>1.3-groovy-2.5</spock.version> <spring-asciidoctor-extensions.version>0.4.0.RELEASE</spring-asciidoctor-extensions.version> <spring-doc-resources.version>0.1.3.RELEASE</spring-doc-resources.version> <spring-doc-resources.url>https://repo.spring.io/release/io/spring/docresources/spring-doc-resources/${spring-doc-resources.version}/spring-doc-resources-${spring-doc-resources.version}.zip</spring-doc-resources.url> <testcontainers.version>1.12.5</testcontainers.version> <testng.version>6.14.3</testng.version> </properties>
看到這里進(jìn)行了一個(gè)屬性聲明,聲明了jdk版本,編碼格式以及打包編譯后的版本等;但是這里僅僅只是聲明?。?!
我們接著
這個(gè)部分是SpringBoot的插件管理
tips:
這里的<> 管理模塊插件所需要的版本號(hào),所以在我們?cè)趯?dǎo)入插件時(shí),也不需要導(dǎo)入插件版本控制。
我們Ctrl+鼠標(biāo)右鍵點(diǎn)擊<>,一進(jìn)來就看到了一系列的版本號(hào):
這里就聲明了很多第三方框架的版本號(hào),這里對(duì)應(yīng)的是2.2.9.RELEASE的版本號(hào),如果更改SpringBoot版本則這里的版本也會(huì)變化。但是正如前面所說,<>也還只是聲明而已?。?!
我們接著
決定項(xiàng)目不需要導(dǎo)入版本號(hào)的原因還得是<>
tips:
spring-boot-starter-parent 通過繼承spring-boot-dependencies 從而實(shí)現(xiàn)了SprngBoot的本依賴營理,所以我的Springboot工程繼承spring-boot-starter-parent后已經(jīng)具備版本鎖定等配置了,這也就是在 Spring Boot 項(xiàng)目中部分依賴不需要寫版本號(hào)的原因。
Spring-Boot-Starter-Parent父依賴啟動(dòng)器的主要作用是進(jìn)行版本統(tǒng)一管理,那么項(xiàng)目運(yùn)行依賴的JAR包是從何而來的?
我們以<>為突破口,我們依舊是Ctrl+鼠標(biāo)左鍵點(diǎn)進(jìn)去,在spring-boot-starter-web里面很明顯看到了一系列的依賴管理:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> <exclusions> <exclusion> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-el</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> </dependencies>
我們只在pom.xml里面引入了spring-boot-starter-web一個(gè)依賴(也就是直接依賴了web依賴啟動(dòng)器),而里面依賴了tomcat,springmvc等等,則說明這個(gè)過程中進(jìn)行了依賴傳遞,而我們點(diǎn)擊任何一個(gè)web依賴啟動(dòng)器里面的依賴時(shí)發(fā)現(xiàn),里面依然還有很多依賴,以tomcat為例:
里面仍然包含了啟動(dòng)tomcat所需要的全部依賴。
到這里我們就可以知道spring-boot-starter-web依賴啟動(dòng)器的主要作用就是打包了Web開發(fā)場景所有的依賴(基于依賴傳遞的方式,加載當(dāng)前倉庫里對(duì)應(yīng)的jar包)。
正是如此,在pom.xml中引入spring-boot-stater-web依賴啟動(dòng)器時(shí),就可以實(shí)現(xiàn)Web場原開發(fā),而不需要額外導(dǎo)入Tomcat服務(wù)戰(zhàn)以及其他Web依賴文件等當(dāng)然,這些引入的依賴文件的版本號(hào)還是由spring-boot-starter-parent父依賴進(jìn)行的統(tǒng)一管理(這也是SpringBoot約定大于配置的一個(gè)重要體現(xiàn))Spring Boot除了提供有上述介紹的Web依賴啟動(dòng)器外,還提供了其他許多開發(fā)場景的相關(guān)依賴。
關(guān)于“SpringBoot依賴管理源碼分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。