ホームページ  >  記事  >  Java  >  SpringBoot の依存関係管理のソース コード分析

SpringBoot の依存関係管理のソース コード分析

WBOY
WBOY転載
2023-05-22 13:49:14953ブラウズ

1. 依存関係の管理

Ⅰ. 一部の依存関係をインポートするときにバージョンを指定する必要がないのはなぜですか?

SpringBoot の依存関係管理のソース コード分析

プロジェクトの作成時に追加した依存関係では、バージョン番号を指定するのに役立ちませんでは、SpringBoot はどのようにバージョン アカウントを指定するのでしょうか?

さあ、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- の上に留まります。親UpCtrl マウスの左ボタンクリックして、この親依存関係ランチャーが何を担当しているかを見てみましょう:

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

まず中に入って見つけます: この親依存関係ランチャーがあります。上記のように、彼は父親です!これについては後で詳しく分析します。 ! !

その後、読み続けてください

<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 バージョン、エンコード形式、パッケージ化およびコンパイルされたバージョンなどを宣言するプロパティ宣言が表示されますが、これは単なるステートメントです。 ! !

#続きましょう

SpringBoot の依存関係管理のソース コード分析

この部分は SpringBoot のプラグイン管理です

ヒント:

プラグインをインポートする場合、ここでの 管理モジュール プラグインは特定のバージョン番号を必要とするため、プラグインのバージョン管理を考慮する必要はありません。

1.2 質問への答え
Ctrl キーを押しながら を右クリックすると、すぐに一連のバージョン番号が表示されます。

SpringBoot の依存関係管理のソース コード分析

多くのサードパーティ フレームワークのバージョン番号がここで宣言されています。これは、

2.2.9.RELEASE のバージョン番号に対応します。SpringBoot のバージョンが変更された場合、ここのバージョンも変わります。ただし、前述したように、 は単なるステートメントです。 ! !

それでは、

SpringBoot の依存関係管理のソース コード分析

プロジェクトがバージョン番号をインポートする必要がない理由は次のとおりです

ヒント:

spring-boot-starter-parentは、spring-boot-dependencyを継承することでSpringBootの依存関係管理を実現しているので、私のSpringbootプロジェクトでは、spring-boot-starter-parentを継承した上でバージョンロックなどの設定がすでに行われている。はい。これが、Spring Boot プロジェクトで

部分的な依存関係 のバージョン番号を記述する必要がない理由です。

Ⅱ. プロジェクトが依存する JAR パッケージはどこから来ますか?

Spring-Boot-Starter-Parent Parent dependency Starter主な機能は 統合バージョン管理を実行することです では、プロジェクトが依存する 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 依存関係ランチャーで依存関係をクリックすると、そこにはまだ多くの依存関係があることがわかります。Tomcat を例に挙げます。 # には、Tomcat を起動するために必要なものがすべて含まれています。

2.2 質問への答えSpringBoot の依存関係管理のソース コード分析

この時点で、spring-boot-starter-web 依存関係スターターの主な機能は、Web のすべての依存関係をパッケージ化することであることがわかります。開発シナリオ (依存関係の配信方法に基づいて、現在のウェアハウスに対応する jar パッケージをロードします)。

このように、pom. 依存関係ファイルなどに spring-boot-stater-web 依存関係スターターが導入されると、当然ながら、これら導入された依存関係ファイルのバージョン番号は依然として によって統一管理されます。 spring-boot-starter-parent 親の依存関係 (これは、

SpringBoot の規則は構成よりも優れている の重要な現れでもあります) Spring Boot が提供するもの 上記で紹介した Web 依存関係ランチャーに加えて、関連する依存関係も提供します。他の多くの開発シナリオ。

以上がSpringBoot の依存関係管理のソース コード分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。