0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Spring Boot 3.2.0 → 3.5.3 バージョンアップ対応(POMまわり)

Last updated at Posted at 2025-09-10

Spring Boot 3.2.0 → 3.5.3 バージョンアップ対応(POMまわり)


背景(目的)

Spring Boot を 3.2.0 → 3.5.3 へ上げるにあたり、
特に pom.xml の依存管理(BOM / 直指定ライブラリ) の調整が必要。

  • Boot 3.5 系では BOM 管理を徹底することが必須。
    → Spring Cloud や AWS SDK v2 は 専用 BOM を import しないと互換性が崩れる。
  • Boot が管理しない外部ライブラリ(MyBatis, BeanUtils, POI, PDFBox, DbUnit 等)は 個別にバージョンを固定して維持するしかない。
  • したがって「BOM に寄せる」「starter に統一する」「個別管理継続」の3分類で扱いを整理する。

一覧(Before → After)

区分 現状(3.2.0) 3.5.3 対応後 理由 結論
Parent spring-boot-starter-parent:3.2.0 3.5.3 に更新 Boot 本体の依存整合性を維持するため OK(version を上げるだけ)
Spring Boot / Security / Data / Jackson / Micrometer / Hikari starter + version 指定なし そのまま(starter-parent 経由 BOM 管理) Boot BOM が管理するため version 指定不要 OK(変更不要)
Spring Cloud spring-cloud-starter-bootstrap:3.0.1 BOM import → 2025.0.x (Northfields) に揃える Boot 3.5 系と互換があるのは Cloud 2025.0.x 系のみ 必須更新
AWS SDK v2 s3:2.29.52, sqs:2.29.52 を直指定 AWS BOM import(2.29.x) → 個別依存の <version> 削除 モジュール間で互換性を保つには BOM 管理が必須 必須更新
MyBatis mybatis / mybatis-spring を直指定 mybatis-spring-boot-starter に統一 starter に寄せないと Boot 3.5 と依存整合が崩れる可能性 必須修正
Commons BeanUtils commons-beanutils:1.9.4 Boot 管理外 → 1.10.x に更新検討 1.9.4 は既知の脆弱性あり。Boot BOM 管理外 個別管理継続(更新推奨)
Apache POI / POI-Ooxml poi:5.2.3, poi-ooxml:5.2.3 Boot 管理外 → version 指定を残す Boot BOM 管理外。明示的に固定が必要 個別管理継続(CVE チェック要)
Apache XMLBeans xmlbeans:5.3.0 Boot 管理外 → version 指定を残す Boot BOM 管理外。明示的に固定が必要 個別管理継続(CVE チェック要)
Apache PDFBox pdfbox:2.0.29 Boot 管理外 → version 指定を残す Boot BOM 管理外。明示的に固定が必要 個別管理継続(CVE チェック要)
DbUnit dbunit:2.7.3 Boot 管理外 → version 指定を残す Boot BOM 管理外。明示的に固定が必要 個別管理継続(CVE チェック要)

✅ 結論

  • BOM に寄せるもの

    • Spring Boot 系(starter-parent 経由)
    • Spring Cloud(2025.0.x BOM)
    • AWS SDK v2(software.amazon.awssdk:bom
  • starter に統一すべきもの

    • MyBatis → mybatis-spring-boot-starter
  • 個別管理継続するもの

    • Commons BeanUtils(更新推奨)
    • POI / PDFBox / XMLBeans / DbUnit(CVE チェックを定期的に実施)

→ 結論として、BOM に寄せられるものは BOM に任せ、Boot 管理外のライブラリは個別に固定+脆弱性監視が必須となる。


修正例(スニペット)

Parent

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.5.3</version>
    <relativePath/>
</parent>

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.5.3</version>
    <relativePath/>
  </parent>

  <groupId>com.example</groupId>
  <artifactId>demo-app</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <name>demo-app</name>
  <description>Spring Boot 3.5.3 Migration Example</description>

  <properties>
    <java.version>17</java.version>
  </properties>

  <!-- BOM import (Cloud / AWS) -->
  <dependencyManagement>
    <dependencies>
      <!-- Spring Cloud BOM -->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>2025.0.0</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <!-- AWS SDK v2 BOM -->
      <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>bom</artifactId>
        <version>2.29.52</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <!-- Spring Boot starters -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>

    <!-- Spring Cloud -->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-bootstrap</artifactId>
    </dependency>

    <!-- AWS SDK v2 -->
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>s3</artifactId>
    </dependency>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>sqs</artifactId>
    </dependency>

    <!-- MyBatis (starter統一) -->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>3.0.3</version>
    </dependency>

    <!-- Commons BeanUtils (最新版に更新) -->
    <dependency>
      <groupId>commons-beanutils</groupId>
      <artifactId>commons-beanutils</artifactId>
      <version>1.10.0</version>
    </dependency>

    <!-- 個別管理ライブラリ -->
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>5.2.3</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>5.2.3</version>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlbeans</groupId>
      <artifactId>xmlbeans</artifactId>
      <version>5.3.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.pdfbox</groupId>
      <artifactId>pdfbox</artifactId>
      <version>2.0.29</version>
    </dependency>
    <dependency>
      <groupId>org.dbunit</groupId>
      <artifactId>dbunit</artifactId>
      <version>2.7.3</version>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>


<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.5.3</version>
    <relativePath/>
  </parent>

  <groupId>com.example</groupId>
  <artifactId>demo-app</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <name>demo-app</name>
  <description>Spring Boot 3.5.3 Migration Example</description>

  <properties>
    <java.version>17</java.version>
  </properties>

  <!-- BOM import (Cloud / AWS) -->
  <dependencyManagement>
    <dependencies>
      <!-- Spring Cloud BOM -->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>2025.0.0</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

      <!-- AWS SDK v2 BOM -->
      <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>bom</artifactId>
        <version>2.29.52</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <!-- Spring Boot starters -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>

    <!-- Spring Cloud -->
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-bootstrap</artifactId>
    </dependency>

    <!-- AWS SDK v2 -->
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>s3</artifactId>
    </dependency>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>sqs</artifactId>
    </dependency>

    <!-- MyBatis (starter統一) -->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>3.0.3</version>
    </dependency>

    <!-- Commons BeanUtils (最新版に更新) -->
    <dependency>
      <groupId>commons-beanutils</groupId>
      <artifactId>commons-beanutils</artifactId>
      <version>1.10.0</version>
    </dependency>

    <!-- 個別管理ライブラリ -->
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>5.2.3</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>5.2.3</version>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlbeans</groupId>
      <artifactId>xmlbeans</artifactId>
      <version>5.3.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.pdfbox</groupId>
      <artifactId>pdfbox</artifactId>
      <version>2.0.29</version>
    </dependency>
    <dependency>
      <groupId>org.dbunit</groupId>
      <artifactId>dbunit</artifactId>
      <version>2.7.3</version>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>


✅ 補足

spring-boot-starter-parent を 3.5.3 に更新 → Boot 系の依存は全部 BOM 管理に任せられる

spring-cloud-dependencies:2025.0.0 を import

software.amazon.awssdk:bom:2.29.52 を import

MyBatis は starter に一本化

BeanUtils は最新版に引き上げ

POI, XMLBeans, PDFBox, DbUnit は Boot 管理外 → 個別指定継続
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?