第1章 Spring Boot 2.5 アプリケーションの Spring Boot 2.7.13 への移行

Red Hat がサポートするコンポーネントの依存関係を管理する Spring Boot BOM (Bill of Materials) は、Red Hat support for Spring Boot 2.7 以降では使用できません。依存関係の管理に Spring Boot BOM を使用するアプリケーションを移行するには、アプリケーションの pom.xml ファイルから BOM を削除してから、必要な依存関係とそのバージョンを pom.xml ファイルに追加します。

次の手順は、Red Hat コンポーネントで一般的に使用される依存関係の一部を更新する方法を示しています。依存関係の完全なリストは、サポートされている Spring Boot の設定と統合 を参照してください。

前提条件

  • Spring Boot BOM を使用する動作中の Spring Boot アプリケーションがあります。

手順

  1. アプリケーションの pom.xml ファイルから Spring Boot BOM を削除します。

    • BOM を pom.xml ファイルの <dependencyManagement> セクションで依存関係として使用する場合は、ファイルから次の行を削除します。

      <project>
        ...
        <dependencyManagement>
          <dependencies>
            <dependency>
              <groupId>io.dekorate</groupId>
              <artifactId>dekorate-spring-bom</artifactId>
              <version>${dekorate.version}</version>
              <type>pom</type>
              <scope>import</scope>
            </dependency>
            <dependency>
            <dependency>
              <groupId>dev.snowdrop</groupId>
              <artifactId>snowdrop-dependencies</artifactId>
              <version>{version-spring-boot-bom}</version>
              <type>pom</type>
              <scope>import</scope>
            </dependency>
          </dependencies>
        </dependencyManagement>
        ...
      </project>
    • BOM を親 BOM として使用する場合は、ファイルから次の行を削除します。

      <project>
        ...
        <parent>
          <groupId>dev.snowdrop</groupId>
          <artifactId>snowdrop-dependencies</artifactId>
          <version>{version-spring-boot-bom}</version>
        </parent>
        ...
      </project>
  2. Spring Boot と Dekorate の管理依存関係を追加します。Red Hat Runtimes: Component Details Overview で、依存関係の最新のサポート対象バージョンを見つけることができます。

    <dependencyManagement>
      ...
      <dependency>
        <groupId>io.dekorate</groupId>
        <artifactId>dekorate-spring-bom</artifactId>
        <version>${dekorate.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependencies>
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-dependencies</artifactId>
          <version>${spring-boot.version}</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
      ...
    </dependencyManagement>
  3. 依存関係として含まれる Red Hat がサポートするコンポーネントにバージョンを追加します。Red Hat Runtimes: Component Details Overview で、依存関係の最新のサポート対象バージョンを見つけることができます。

    <dependencies>
      ...
      <!-- Dekorate -->
      <dependency>
        <groupId>io.dekorate</groupId>
        <artifactId>openshift-spring-starter</artifactId>
        <version>${dekorate.version}</version>
      </dependency>
    
      <!-- Hibernate -->
      <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${hibernate.version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.apache.geronimo.specs</groupId>
            <artifactId>geronimo-jta_1.1_spec</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
    
      <!-- Hibernate Validator-->
      <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>${hibernate-validator.version}</version>
      </dependency>
    
      <!-- Narayana -->
      <dependency>
        <groupId>org.jboss.narayana.jta</groupId>
        <artifactId>narayana-jta</artifactId>
        <version>${narayana.version}</version>
      </dependency>
      <dependency>
        <groupId>org.jboss.narayana.jts</groupId>
        <artifactId>narayana-jts-integration</artifactId>
        <version>${narayana.version}</version>
       </dependency>
    
      <!-- RestEasy -->
      <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-spring-boot-starter</artifactId>
        <version>${resteasy-spring-boot-starter.version}</version>
       </dependency>
    
      <!-- Tomcat -->
      <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-core</artifactId>
        <version>${tomcat.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-el</artifactId>
        <version>${tomcat.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <version>${tomcat.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-websocket</artifactId>
        <version>${tomcat.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.tomcat</groupId>org.apache.tomcat
        <artifactId>tomcat-jdbc</artifactId>
        <version>${tomcat.version}</version>
      </dependency>
    
      <!-- Undertow -->
      <dependency>
        <groupId>io.undertow</groupId>
        <artifactId>undertow-core</artifactId>
        <version>${undertow.version}</version>
      </dependency>
    
      ...
    </dependencies>
  4. spring-boot-starter-data-jpa groupId、artifactId、version (GAV) が存在する場合は、次の hibernate-core 除外を削除します。

    <exclusion>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
    </exclusion>
  5. org.springframework.boot:spring-boot-maven-plugin を使用する場合は、Spring Boot バージョンをプラグインに追加します。

    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <version>${spring-boot.version}</version>
      ...
    </plugin>

依存関係を更新したら、Spring Boot アプリケーションをビルドして起動できます。詳細は、Spring Boot 開発者向け Dekorate ガイド を参照してください。