検索
ホームページJava&#&チュートリアルSpringBoot の依存関係管理のソース コード分析

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 サイトの他の関連記事を参照してください。

声明
この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール