最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot依賴管理的源碼解析

 更新時間:2023年04月28日 10:45:06   作者:獅子也瘋狂  
這篇文章主要介紹了SpringBoot依賴管理的源碼解析,maven提供了一套依賴管理機制,通過在pom.xml定義坐標,通過坐標從互聯(lián)網(wǎng)的中央倉庫下載依賴的構(gòu)件(jar包),規(guī)范去管理依賴所有構(gòu)件,這就叫依賴管理,需要的朋友可以參考下

一. 依賴管理

Ⅰ. 部分dependency導(dǎo)入時為啥不需要指定版本?

我們創(chuàng)建項目時添加的依賴并沒有幫我們指定版本號<>,那SpringBoot是如何來指定版本賬號的呢?

現(xiàn)在我們來剝析一下SpringBoot的父依賴啟動器<>

<!--	SpringBoot父項目依賴管理-->
	<parent>
		<artifactId>spring-boot-parent</artifactId>
		<groupId>org.springframework.boot</groupId>
		<version>2.2.9.RELEASE</version>
		<relativePath/>			<!-- 查看本地倉庫的源碼 -->
	</parent>

1.1 父依賴啟動器的工作

鼠標指針停留在spring-boot-parentCtrl + 鼠標左鍵點擊進去,我們來看看這個父依賴啟動器負責什么工作:

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-dependencies</artifactId>
   <version>${revision}</version>
   <relativePath>../spring-boot-dependencies</relativePath>
</parent>

首先進去發(fā)現(xiàn):這個父依賴啟動器有一個爸爸<>,如上!這個我們后面深入剝析?。?!

然后接下看

<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>

看到這里進行了一個屬性聲明,聲明了jdk版本,編碼格式以及打包編譯后的版本等;但是這里僅僅只是聲明?。。?/p>

我們接著

image-20230418101859281

這個部分是SpringBoot的插件管理

tips:

? 這里的<> 管理模塊插件所需要的版本號,所以在我們在導(dǎo)入插件時,也不需要導(dǎo)入插件版本控制。

1.2 問題答案

我們Ctrl+鼠標右鍵點擊<>,一進來就看到了一系列的版本號:

image-20230418103707412

這里就聲明了很多第三方框架的版本號,這里對應(yīng)的是2.2.9.RELEASE的版本號,如果更改SpringBoot版本則這里的版本也會變化。但是正如前面所說,<>也還只是聲明而已?。?!

我們接著

image-20230418104407101

決定項目不需要導(dǎo)入版本號的原因還得是<>

tips:

spring-boot-starter-parent 通過繼承spring-boot-dependencies 從而實現(xiàn)了SprngBoot的本依賴營理,所以我的Springboot工程繼承spring-boot-starter-parent后已經(jīng)具備版本鎖定等配置了,這也就是在 Spring Boot 項目中部分依賴不需要寫版本號的原因。

Ⅱ. 項目運行依賴的JAR包是從何而來的?

Spring-Boot-Starter-Parent父依賴啟動器的主要作用是進行版本統(tǒng)一管理,那么項目運行依賴的JAR包是從何而來的?

2.1 分析源碼

我們以<>為突破口,我們依舊是Ctrl+鼠標左鍵點進去,在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一個依賴(也就是直接依賴了web依賴啟動器),而里面依賴了tomcat,springmvc等等,則說明這個過程中進行了依賴傳遞,而我們點擊任何一個web依賴啟動器里面的依賴時發(fā)現(xiàn),里面依然還有很多依賴,以tomcat為例:

image-20230419092825588

里面仍然包含了啟動tomcat所需要的全部依賴。

2.2 問題答案

到這里我們就可以知道spring-boot-starter-web依賴啟動器的主要作用就是打包了Web開發(fā)場景所有的依賴(基于依賴傳遞的方式,加載當前倉庫里對應(yīng)的jar包)。

正是如此,在pom.xml中引入spring-boot-stater-web依賴啟動器時,就可以實現(xiàn)Web場原開發(fā),而不需要額外導(dǎo)入Tomcat服務(wù)戰(zhàn)以及其他Web依賴文件等當然,這些引入的依賴文件的版本號還是由spring-boot-starter-parent父依賴進行的統(tǒng)一管理(這也是SpringBoot約定大于配置的一個重要體現(xiàn))Spring Boot除了提供有上述介紹的Web依賴啟動器外,還提供了其他許多開發(fā)場景的相關(guān)依賴。

到此這篇關(guān)于SpringBoot依賴管理的源碼解析的文章就介紹到這了,更多相關(guān)SpringBoot依賴管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳細Java批量獲取微信公眾號方法

    詳細Java批量獲取微信公眾號方法

    本篇文章給大家講解了用JAVA如何實現(xiàn)向爬蟲一樣獲取微信公眾號和其基本信息等,需要你正巧需要,那跟著學(xué)習(xí)參考下吧。
    2017-12-12
  • Flowable數(shù)據(jù)庫表分類及數(shù)據(jù)字典解析

    Flowable數(shù)據(jù)庫表分類及數(shù)據(jù)字典解析

    這篇文章主要介紹了Flowable數(shù)據(jù)庫表分類及數(shù)據(jù)字典解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • java 中List按照date排序的實現(xiàn)

    java 中List按照date排序的實現(xiàn)

    這篇文章主要介紹了java 中List按照date排序的實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • APT?注解處理器實現(xiàn)?Lombok?常用注解功能詳解

    APT?注解處理器實現(xiàn)?Lombok?常用注解功能詳解

    這篇文章主要為大家介紹了使用APT?注解處理器實現(xiàn)?Lombok?常用注解功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Java項目中添加外部jar包的兩種方式(收藏版)

    Java項目中添加外部jar包的兩種方式(收藏版)

    這篇文章主要介紹了java項目中添加外部jar包的兩種方式,第二種方式是將外部jar包引入到本地maven倉庫中,本文給大家講解的非常詳細,需要的朋友可以參考下
    2023-03-03
  • 基于ZooKeeper實現(xiàn)隊列源碼

    基于ZooKeeper實現(xiàn)隊列源碼

    這篇文章主要介紹了基于ZooKeeper實現(xiàn)隊列源碼的相關(guān)內(nèi)容,包括其實現(xiàn)原理和應(yīng)用場景,以及對隊列的簡單介紹,具有一定參考價值,需要的朋友可以了解下。
    2017-09-09
  • Java的MyBatis框架中關(guān)鍵的XML字段映射的配置參數(shù)詳解

    Java的MyBatis框架中關(guān)鍵的XML字段映射的配置參數(shù)詳解

    將XML文件的schema字段映射到數(shù)據(jù)庫的schema是我們操作數(shù)據(jù)庫的常用手段,這里我們就來整理一些Java的MyBatis框架中關(guān)鍵的XML字段映射的配置參數(shù)詳解,需要的朋友可以參考下
    2016-06-06
  • Java中回調(diào)函數(shù)?(callback)?及其實際應(yīng)用場景

    Java中回調(diào)函數(shù)?(callback)?及其實際應(yīng)用場景

    在Java中回調(diào)函數(shù)(Callback)是一種常見的設(shè)計模式,用于實現(xiàn)異步操作或事件處理,這篇文章主要給大家介紹了關(guān)于Java中回調(diào)函數(shù)?(callback)?及其實際應(yīng)用場景的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • java 多線程的幾種實現(xiàn)方法總結(jié)

    java 多線程的幾種實現(xiàn)方法總結(jié)

    這篇文章主要介紹了java 多線程的幾種實現(xiàn)方法總結(jié)的相關(guān)資料,希望通過本文能幫助到大家,讓大家掌握java多線程的知識,需要的朋友可以參考下
    2017-10-10
  • SpringBoot復(fù)雜參數(shù)應(yīng)用詳細講解

    SpringBoot復(fù)雜參數(shù)應(yīng)用詳細講解

    我們在編寫接口時會傳入復(fù)雜參數(shù),如Map、Model等,這種類似的參數(shù)會有相應(yīng)的參數(shù)解析器進行解析,并且最后會將解析出的值放到request域中,下面我們一起來探析一下其中的原理
    2022-09-09

最新評論

七台河市| 紫阳县| 巫山县| 无为县| 灵山县| 鹤山市| 化州市| 桐柏县| 洞头县| 澜沧| 浑源县| 象山县| 秦皇岛市| 青海省| 吴旗县| 乃东县| 宜川县| 高青县| 海宁市| 江川县| 海丰县| 木兰县| 长武县| 麻城市| 三河市| 谷城县| 陇南市| 武汉市| 安塞县| 五原县| 南阳市| 凯里市| 和林格尔县| 南部县| 盘山县| 雅江县| 固原市| 克东县| 石台县| 仙游县| 吉安县|