>Java >java지도 시간 >SpringBoot 종속성 관리 소스 코드 분석

SpringBoot 종속성 관리 소스 코드 분석

WBOY
WBOY앞으로
2023-05-22 13:49:141065검색

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-parentCtrl + 왼쪽 마우스 버튼클릭에 그대로 유지됩니다. 상위 종속성 실행 프로그램이 담당하는 작업을 살펴보세요.

<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-dependent를 상속하여 SpringBoot를 구현합니다. 이는 종속성 관리를 기반으로 하므로 Spring-boot-starter-parent를 상속한 후 내 Springboot 프로젝트에는 이미 버전 잠금 및 기타 구성이 있습니다. 이것이 Spring Boot 프로젝트의 일부 종속성에 대해 버전 번호를 쓸 필요가 없는 이유입니다.

II. 프로젝트가 의존하는 JAR 패키지는 어디에서 왔나요?

Spring-Boot-Starter-Parent상위 종속성 스타터

의 주요 기능은 통합 버전 관리를 수행하는 것입니다. JAR 패키지는 어디서 오는가?

2.1 소스 코드 분석
우리는 를 사용하여 입력합니다. 우리는 여전히 봄에 그것을 볼 수 있습니다. 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만 도입했으며(즉, 웹 종속성 스타터에 직접 의존함) tomcat, springmvc에 종속됩니다.

종속성 전송

은 이 프로세스에서 수행되며, 웹 종속성 실행 프로그램에서 종속성을 클릭하면 Tomcat을 예로 들어보면 여전히 많은 종속성이 있음을 알 수 있습니다.

SpringBoot 종속성 관리 소스 코드 분석It Tomcat의 모든 종속성을 시작하기 위한 요구 사항이 여전히 포함되어 있습니다.

2.2 질문에 대한 답변

이 시점에서 우리는 spring-boot-starter-web 종속성 스타터의 주요 기능이 웹 개발 시나리오의 모든 종속성을 패키지하는 것임을 알 수 있습니다(종속성 전송 방법을 기반으로, 현재 창고 Bag에 해당 병을 넣습니다).

정확히, spring-boot-stater-web 종속성 스타터가 pom에 도입되면 가져온 종속성 파일의 버전 번호는 여전히 spring-boot-starter-parent 종속성에 의해 균일하게 관리됩니다(이 또한 중요합니다.

SpringBoot 규칙의 표현은 구성보다 큽니다
). 위에서 소개한 웹 종속성 스타터 외에도 Spring Boot는 다른 많은 개발 시나리오에 대한 관련 종속성도 제공합니다.

위 내용은 SpringBoot 종속성 관리 소스 코드 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제