Maison  >  Article  >  Java  >  Analyse du code source de la gestion des dépendances SpringBoot

Analyse du code source de la gestion des dépendances SpringBoot

WBOY
WBOYavant
2023-05-22 13:49:14953parcourir

1. Gestion des dépendances

Ⅰ Pourquoi n'avez-vous pas besoin de spécifier la version lors de l'importation de certaines dépendances ?

Analyse du code source de la gestion des dépendances SpringBoot

Les dépendances que nous avons ajoutées lors de la création du projet ne nous ont pas aidés à spécifier le numéro de versionAlors, comment SpringBoot spécifie-t-il le compte de version ?

Maintenant, décollons le lanceur de dépendances parent de SpringBoot

<!--	SpringBoot父项目依赖管理-->
	<parent>
		<artifactId>spring-boot-parent</artifactId>
		<groupId>org.springframework.boot</groupId>
		<version>2.2.9.RELEASE</version>
		<relativePath/>			<!-- 查看本地仓库的源码 -->
	</parent>
1.1 Le fonctionnement du lanceur de dépendances parent

Le pointeur de la souris reste allumé spring-boot-parentCtrl + bouton gauche de la souriscliquez sur Entrer et prenons un aperçu de ce dont le lanceur de dépendances parentales est responsable :

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

Entrez d'abord et découvrez : ce lanceur de dépendances parentales a un père, comme ci-dessus ! Nous analyserons cela en profondeur plus tard ! ! !

Ensuite, regardez

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

et voyez qu'il y a une déclaration d'attribut ici, qui déclare la version jdk, le format d'encodage, la version packagée et compilée, etc. ; ! !

Continuons

Analyse du code source de la gestion des dépendances SpringBoot

Cette partie concerne la gestion des plug-ins de SpringBoot

conseils :

Lors de l'importation de plug-ins, étant donné que le plug-in du module de gestion Il n'est pas nécessaire de prendre en compte les problèmes de contrôle de version du plug-in.

1.2 Réponse à la question

On Ctrl+clic droit , et dès qu'on entre, on voit une série de numéros de version :

Analyse du code source de la gestion des dépendances SpringBoot

Les numéros de version de nombreux frameworks tiers sont déclarés ici, et ceux correspondants ici sont le numéro de version de 2.2.9.RELEASE, si vous changez la version de SpringBoot, la version ici changera également. Mais comme mentionné précédemment, n'est qu'une déclaration ! ! !

Nous avons ensuite

Analyse du code source de la gestion des dépendances SpringBoot

La raison pour laquelle le projet n'a pas besoin d'importer le numéro de version doit être Ceci est basé sur la gestion des dépendances, donc mon projet Springboot dispose déjà d'un verrouillage de version et d'autres configurations après avoir hérité de spring-boot-starter-parent. C'est pourquoi il n'est pas nécessaire d'écrire un numéro de version pour certaines dépendances dans le projet Spring Boot.

Ⅱ. D'où vient le package JAR dont dépend le projet ?

Spring-Boot-Starter-ParentLa fonction principale du starter de dépendance parent

est d'effectuer la
gestion unifiée des versions

, puis le projet. dépend d'où vient le package JAR ?

2.1 Analyse du code source Nous utilisons comme point de percée Nous utilisons toujours Ctrl + bouton gauche de la souris pour entrer. Gestion des dépendances de la série 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>
Nous avons uniquement introduit spring-boot-starter-web comme dépendance dans pom.xml (c'est-à-dire qu'il repose directement sur le démarreur de dépendance Web), et cela dépend de tomcat, springmvc , etc. Le

Le transfert de dépendances
est effectué dans ce processus, et lorsque nous cliquons sur la dépendance dans n'importe quel lanceur de dépendances Web, nous constatons qu'il contient encore de nombreuses dépendances. En prenant Tomcat comme exemple :

Il. contient toujours les exigences pour démarrer Tomcat toutes les dépendances. 2.2 Réponses à la question

Analyse du code source de la gestion des dépendances SpringBootÀ ce stade, nous pouvons savoir que la fonction principale du starter de dépendance spring-boot-starter-web est de conditionner toutes les dépendances du scénario de développement web (basé sur la méthode de transfert de dépendances, charger le pot correspondant dans le sac d'entrepôt actuel).

Exactement, lorsque le démarreur de dépendance spring-boot-stater-web est introduit dans pom, le numéro de version du fichier de dépendance importé est toujours géré uniformément par la dépendance parent spring-boot-starter-parent (c'est également un élément important). (La manifestation de
La convention SpringBoot est supérieure à la configuration
). En plus du démarreur de dépendance Web présenté ci-dessus, Spring Boot fournit également des dépendances pertinentes pour de nombreux autres scénarios de développement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer