Spring Boot 4 Upgrade Guide (Using GitHub Copilot Agent)

Spring Boot 4 Upgrade Guide (Using GitHub Copilot Agent)



Upgrading to Java 21 and Spring Boot 4.0.3 is not just a dependency bump — it requires a structured migration strategy that preserves behavior, maintains stability, and ensures compatibility across the ecosystem.

This guide outlines a production-ready upgrade framework designed for enterprise Spring services. It integrates phased migration, official Spring guidance, and GitHub Copilot Agent automation to produce clean, reviewable upgrade pull requests.


Upgrade Objectives

  • Upgrade to Java 21
  • Upgrade to Spring Boot 4.0.3
  • Align with compatible Spring Cloud version
  • Preserve business logic
  • Maintain Maven build
  • Ensure compilation, tests, and successful startup

Upgrade Principles

  • Preserve existing behaviour
  • Do NOT remove business logic
  • Make minimal but correct changes
  • Follow official Spring migration guidance
  • Upgrade incrementally with validation after each phase

Official Migration Reference

All upgrades should follow the official Spring documentation:

Spring Boot 4.0 Migration Guide


Using GitHub Copilot Agent for the Upgrade

When performing large-scale framework upgrades, GitHub Copilot Agent can generate structured pull requests when given a precise migration instruction.

Recommended setup: Use GitHub Agents session with Claude Opus 4.6 for high-quality automated refactoring and PR generation.

Standard Upgrade Prompt

Goal:
Upgrade this service to Java 21 and Spring Boot 4.0.3.

Constraints:
- Preserve behavior
- Keep Maven build
- Do NOT remove business logic
- Ensure build and tests pass

Tasks:
1. Upgrade Java (source/target 21)
2. Upgrade Spring Boot parent to 4.0.3
3. Perform Jakarta migration
4. Align dependencies
5. Update configuration
6. Fix tests
7. Verify build and startup
8. Provide summary and risk areas

Before applying changes:
- Analyze project structure
- Identify current versions
- List breaking changes
- Propose migration plan
- Wait for confirmation

Phased Migration Execution Workflow

Phase 1 — Java 21 Upgrade

<java.version>21</java.version>

Verification:

  • Project compiles
  • Tests pass
  • Application starts

Phase 2 — Spring Boot 4 Upgrade

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

Rules:

  • Remove versions managed by Spring Boot
  • Keep only necessary starters
  • Do not override Boot-managed dependencies

Phase 3 — Jakarta Migration

Replace legacy javax imports:

OldNew
javax.validationjakarta.validation
javax.servletjakarta.servlet
javax.persistencejakarta.persistence

Phase 4 — Dependency Alignment

  • Upgrade Spring Cloud to compatible release train
  • Update Spring Security configuration to modern DSL
  • Ensure Micrometer + Actuator compatibility
  • Remove deprecated libraries
  • Prefer Boot auto-configuration where possible

Phase 5 — Configuration Updates

  • Fix deprecated application.yml keys
  • Update logging configuration
  • Validate actuator endpoints
  • Review security configuration
  • Verify observability and context propagation

Phase 6 — Testing

  • Use spring-boot-starter-test
  • JUnit 5
  • Remove deprecated test annotations
  • Ensure tests compile and pass

Phase 7 — Build Verification

Upgrade is complete only when:
  • Project compiles
  • Tests pass
  • Application starts successfully
  • No critical runtime warnings

Key Behavioral Changes in Spring Boot 4

Jackson 3 Migration

  • Group ID changes from com.fasterxml.jackson to tools.jackson
  • @JsonComponent → @JacksonComponent
  • Jackson2ObjectMapperBuilderCustomizer → JsonMapperBuilderCustomizer
  • Properties moved under spring.jackson.json.*
  • Automatic module detection on classpath

Temporary Jackson 2 compatibility (not recommended long-term):

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

Observability & Reactor Context

Reactive context must be merged instead of replaced. Custom filters must preserve Micrometer observation context.


Spring Cloud Gateway Changes

  • spring-cloud-starter-gateway-server-webflux
  • spring-cloud-starter-gateway-server-webmvc

Properties must be nested under:

spring:
  cloud:
    gateway:
      server:
        webflux:

Manual Verification Checklist

  • Application starts successfully
  • Health endpoint responds
  • Security authentication works
  • OAuth token flow works
  • External API calls succeed
  • Logs include correlation or transaction ID
  • Metrics are emitted
  • Integration tests pass

Expected Copilot Output After Upgrade

Change Summary

  • Updated dependencies
  • Code changes
  • Configuration changes

Risk Areas

  • Security configuration changes
  • Observability context propagation
  • Jackson serialization differences

Manual Follow-up Steps

  • Deployment validation
  • Monitoring verification
  • Runtime log inspection
  • Load testing

Conclusion

A successful Spring Boot 4 upgrade is about controlled modernization. By combining phased migration, official guidance, and GitHub Copilot Agent automation, teams can upgrade safely to Java 21 and Spring Boot 4 while maintaining production stability.

❤️ Support This Blog


If this post helped you, you can support my writing with a small donation. Thank you for reading.


Comments

Popular posts from this blog

fixed: embedded-redis: Unable to run on macOS Sonoma

Copying MDC Context Map in Web Clients: A Comprehensive Guide

Reset user password for your own Ghost blog