A New Collection of Thoughtful Learning Apps — Now Available on iOS & Android

Image
I’m excited to share a set of mobile apps I’ve recently completed and published on both the Google Play Store and the Apple App Store. These apps are designed with a simple goal in mind: to make meaningful, structured content more accessible, whether you’re studying theology or improving your English vocabulary. 📱 Now Available on Both Platforms All apps are live and available for download: Google Play Developer Page: https://play.google.com/store/apps/dev?id=5835943159853189043 Apple App Store Developer Page: https://apps.apple.com/ca/developer/q-z-l-corp/id1888794100 📖 Theology & Confession Study Apps For those interested in Reformed theology and classical Christian teachings, I’ve developed a series of apps that present foundational texts in a clean, focused reading format: The Belgic Confession Canons of Dort Heidelberg Catechism Westminster Shorter Catechism Each app is designed to provide a distraction-free experience, making it easier to read, reflect, and revisit these im...

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

2026 Begins: Choosing to Stay on the Path as a Blogger

Health Checks and Scaling Strategies for Next.js in Kubernetes