SpringBoot2.x 의존 관리 설정

전제 조건
이 글 은'스프링 부 트 2.x 입문'앨범 의 첫 번 째 글 로,SpringBoot 버 전 은 2.3.1.RELEASE,JDK 버 전 은 1.8 을 사용 했다.
주로 SpringBoot2.x 의 의존 관계 와 의존 하 는 버 전 관 리 를 정리 하고 버 전 관리 에 의존 하 는 것 은 SpringBoot 프로젝트 를 개발 하고 관리 하 는 전제 이다.SpringBootstarter 의 형식 을 통 해 spring-framework 을 포장 하여 원래 의 XML 배 치 를 없 애고 다른 구 조 를 더욱 편리 하 게 통합 하여 완전 하고 효율 적 인 개발 생태 를 만 드 는 데 목적 을 둔다.
SpringBoot 의존 관계
개인 적 으로 Gradle 을 별로 좋아 하지 않 기 때문에 다음 글 은 모두 Maven 으로 예 를 들 수 있다.
SpringCloud 버 전(SpringCloud 의 정식 버 전 은 런던 지하철역 이나 런던 의 한 지명 의 영문 이름 을 버 전 번호 로 한다.예 를 들 어 자주 사용 하 는 F 버 전 Finchley 는 런던 북부 핀 칠 리 에 위치 한 것)관리 와 달리 SpringBoot 의 의존 구성 요소 발표 버 전 은 X.Y.Z.RELEASE 이다.SpringBoot 구성 요 소 는 일반적으로 starter 로 포장 되 기 때문에 구성 요소 의 의존 GAV 는 일반적으로 org.springframework.boot:spring-boot-starter-${구성 요소 이름}:X.Y.Z.RELEASE 입 니 다.그 중에서 X 는 메 인 버 전 입 니 다.서로 다른 메 인 버 전 은 호환성 을 포기 할 수 있 음 을 의미 합 니 다.즉,SpringBoot 1.x 와 SpringBoot 2.x 는 호환성 을 보장 하지 않 습 니 다.한편,구성 요소 이름 은 보통 중간 부품 이나 같은 기능 을 대표 합 니 다.예 를 들 어 data-redis(spring-boot-starter-data-redis,Redis 접근 기능 제공),jdbc(spring-boot-starter-jdbc,JDBC 기반 데이터 베이스 접근 기능 제공)등 입 니 다.SpringBoot 의 현재 최신 버 전 2.3.1.RELEASE 의 org.spring from work.boot:spring-boot-starter:jar:2.3.1.RELEASE 를 예 로 들 어 mvn dependency:tree 로 의존 관 계 를 다음 과 같이 분석 합 니 다.

이 의존 트 리 도 starterSpring 프로젝트 의 포장 과 확장 을 바탕 으로 한 다 는 것 을 증명 했다.
SpringBoot 의존 관리
Spring Initializr 을 사용 하여 SpringBoot 프로젝트 를 만 들 면 프로젝트 의 POM 파일 에 parent 요 소 를 추가 한 것 을 발견 할 수 있 습 니 다.

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.3.1.RELEASE</version>
  <relativePath/> <!-- lookup parent from repository -->
</parent>
사실은 spring-boot-starter-parent 은 현재 프로젝트 의 부모 모듈 로 서 부모 모듈 에서 현재 지정 한 SpringBoot 버 전 2.3.1.RELEASE 모든 의존 하 는 제3자 라 이브 러 리 의 통일 버 전 관 리 를 관리 하고 spring-boot-starter-parent 을 통 해 최상 위 프로젝트 로 거 슬러 올 라 가면 properties 요 소 를 찾 을 수 있 습 니 다.안에 Spring 프레임 워 크 와 모든 의존 하 는 제3자 구성 요소 의 통일 버 전 번 호 를 통일 적 으로 관리 하면 확 정 된 SpringBoot 버 전 을 확보 할 수 있 고 다른 starter 은 지정 버 전이 필요 하지 않 으 며 모든 제3자 의존 버 전도 고정 되 어 있다.예 를 들 어 프로젝트 의 POM 파일 은 다음 과 같다.

<!--             -->
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.3.1.RELEASE</version>
  <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <exclusions>
      <exclusion>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
      </exclusion>
    </exclusions>
  </dependency>
</dependencies>
이렇게 하면 parent 요소 중의 버 전 번 호 를 수정 하면 전체 적 으로 starter 의 버 전 번 호 를 바 꿀 수 있다.이런 방법 은 본질 적 으로 현재 프로젝트 를 spring-boot-starter-parent 의 하위 프로젝트 로 하 는 것 으로 어느 정도 유연성 이 없다.여기 서 다른 방식 을 추천 합 니 다.dependencyManagement 요 소 를 통 해 전체 관리 SpringBoot 버 전 을 통 해 단일 모듈 이나 다 중 모듈 의 Maven 프로젝트 에 적용 합 니 다.프로젝트 의(부모)POM 파일 은 다음 과 같 습 니 다.

<!-- spring-boot-guide  POM -->
<properties>
  <spring.boot.version>2.3.1.RELEASE</spring.boot.version>
</properties>
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>${spring.boot.version}</version>
      <scope>import</scope>
      <type>pom</type>
    </dependency>
  </dependencies>
</dependencyManagement>
그 다음 에 다른 starter 을 사용 해 야 할 때 dependencies 에서 직접 도입 하면 됩 니 다.버 전 번 호 를 지정 하지 않 아 도 됩 니 다.버 전 번 호 는 dependencyManagement 에서 정 의 된 버 전 번호 로 통일 적 으로 관리 합 니 다.

<!-- spring-boot-guide/ch0-dependency  POM -->
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
  </dependency>
</dependencies>
SpringBoot 의존 커버
일부 특수 한 경우 프로젝트 의 대부분 starter 은 상대 적 으로 낮은 버 전 을 사용 할 수 있 으 나 일부 새로운 기능 이 더 높 은 버 전의 개별 starter 에 사용 되 어야 하기 때문에 이 높 은 버 전의 starter 을 강제 도입 해 야 한다.예 를 들 어 프로젝트 에 사 용 된 SpringBoot 구성 요소 의 버 전 은 2.1.5.RELEASE 이 고 중간 부품 서비스 Elasticsearch 의 버 전 은 7.x 이 며 spring-boot-starter-data-elasticsearch 이 지원 하 는 버 전 은 다음 과 같다.

이론 적 으로 SpringBoot 에서 2.3.1.RELEASE 까지 단번에 업그레이드 할 수 있 고 사실은 spring-boot-starter-data-elasticsearch 의 버 전 으로 전 체 를 덮어 쓰 는 SpringBoot 구성 요소 버 전 을 직접 지정 할 수 있다.여기 서 Maven 의 의존 조정 원칙 을 응용 했다.

<!--  POM    POM -->
<properties>
  <spring.boot.version>2.1.5.RELEASE</spring.boot.version>
</properties>
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>${spring.boot.version}</version>
      <scope>import</scope>
      <type>pom</type>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    <version>2.3.1.RELEASE</version>
  </dependency>
</dependencies>
이렇게 하면 spring-boot-starter-data-elasticsearch 버 전 을 2.3.1.RELEASE 으로 단독으로 향상 시 킬 수 있 고 다른 구성 요소 의 버 전 은 2.1.5.RELEASE 으로 유지 할 수 있다.
작은 매듭
현재 두 가지 자주 사용 하 는 방식 으로 SpringBoot 구성 요 소 를 관리 하 는 버 전(두 가지 방식 중 하 나 를 선택)이 있 습 니 다.
  • 에서 parent 요 소 를 설정 하고 프로젝트 계승 방식 으로 SpringBoot 구성 요소 의 버 전 번 호 를 지정 합 니 다.이것 은 Spring Initializr 에서 생 성 된 프로젝트 의 기본 설정 방식 입 니 다.
  • dependencyManagement 요 소 를 설정 하고(부모)POM 파일 을 통 해 SpringBoot 구성 요소 의 버 전 번 호 를 통일 적 으로 지정 합 니 다.
  • 또한 SpringBoot1.x2.x 사이 에 호환성 문제 가 있다(가장 뚜렷 한 것 은 2.x 에서 1.x 중의 대량의 내 건 류 를 삭 제 했 는데 이런 SpringBoot 중의 내 건 류 를 사용 하면 ClassNotFoundException 이 나타 나 기 쉽다).강등 이나 업그레이드 모두 비교적 큰 위험 이 있다.일반적인 상황 에서 같은 큰 버 전 으로 프로젝트 개발 을 하 는 것 을 권장 합 니 다.큰 버 전 전환 이 필요 하 다 면 반드시 완 료 된 기능 테스트 를 하 십시오.
    스프링 부 트 2.x 의 의존 관리 설정 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 스프링 부 트 2.x 의존 관리 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
    저자:throwable
    출처:https://www.cnblogs.com/throwable/p/13206029.html

    좋은 웹페이지 즐겨찾기