Skip to content

Upgrade to Spring Boot 3.3.13 and Spring Cloud 2023.0.6#18

Open
devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
devin/1760991593-upgrade-spring-boot-3.3.13
Open

Upgrade to Spring Boot 3.3.13 and Spring Cloud 2023.0.6#18
devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
devin/1760991593-upgrade-spring-boot-3.3.13

Conversation

@devin-ai-integration

Copy link
Copy Markdown

Upgrade to Spring Boot 3.3.13 and Spring Cloud 2023.0.6

Summary

This PR upgrades all 7 microservices from Spring Boot 2.7.x to 3.3.13 and Spring Cloud 2021.0.8 to 2023.0.6. This is a major version upgrade that includes the mandatory javax → jakarta namespace migration and several breaking changes.

Changes made:

  • Updated all 7 pom.xml files to Spring Boot 3.3.13 and Spring Cloud 2023.0.6
  • Migrated javax.persistencejakarta.persistence in 6 entity classes
  • Migrated javax.transaction.Transactionaljakarta.transaction.Transactional in UserServiceImpl
  • Removed @EnableEurekaClient annotation from 3 application classes (no longer needed in Spring Cloud 2022.0.0+)
  • Updated GlobalExceptionHandler method signatures to use HttpStatusCode instead of HttpStatus in 3 services
  • Added explicit commons-io:2.15.1 dependency to 3 services (Account-Service, Fund-Transfer, Transaction-Service) as it's no longer transitive in Spring Boot 3.x

Compilation & Testing:

  • ✅ All 7 services compile successfully
  • ✅ Tests pass for Service-Registry, Sequence-Generator, and API-Gateway
  • ⚠️ User-Service, Account-Service, Fund-Transfer, and Transaction-Service tests require MySQL and Keycloak (not available in dev environment)

Review & Testing Checklist for Human

This is a HIGH RISK upgrade due to the major version jump. Please verify the following before merging:

  • Deploy and test all 4 database-dependent services (User-Service, Account-Service, Fund-Transfer, Transaction-Service) in a full environment with MySQL and Keycloak running. Verify basic CRUD operations work.
  • Test Feign client error handling: Verify that inter-service communication works correctly, especially error scenarios where FeignClientErrorDecoder uses the new commons-io dependency. Test failed API calls between services.
  • Verify Keycloak integration: Test user authentication, authorization, and admin operations in User-Service. The current Keycloak client version (21.0.1) may need to be upgraded if compatibility issues arise.
  • Verify service discovery: Confirm that all services register with Eureka Service Registry correctly without the @EnableEurekaClient annotation (should be auto-configured).
  • Review Spring Security deprecations: API-Gateway has deprecation warnings for methods marked for removal (authorizeExchange, csrf, oauth2Login, etc.). While not blocking, consider addressing these in a follow-up to avoid future breakage.

Test Plan Recommendation

  1. Start Service-Registry and Sequence-Generator
  2. Start API-Gateway and verify it registers with Eureka
  3. Start all database-dependent services (with MySQL and Keycloak running)
  4. Test end-to-end flows: user creation, account operations, fund transfers, transaction queries
  5. Test error scenarios to verify Feign client error handling with commons-io

Notes

  • Link to Devin run: https://app.devin.ai/sessions/7148874172214a938b537337a800dc29
  • Requested by: Sam Fertig (@samfert-codeium)
  • Spring Boot 3.x is a major breaking change - while all obvious compatibility issues were addressed, additional runtime issues may surface
  • Keycloak client library (21.0.1) compatibility with Spring Boot 3.3.13 was not verified and may need updating

- Updated all 7 microservice pom.xml files to Spring Boot 3.3.13 and Spring Cloud 2023.0.6
- Migrated javax.persistence imports to jakarta.persistence in entity classes (6 files)
- Migrated javax.transaction.Transactional to jakarta.transaction.Transactional in UserServiceImpl
- Removed @EnableEurekaClient annotation from 3 Application classes (no longer needed in Spring Cloud 2022.0.0+)
- Updated GlobalExceptionHandler method signatures to use HttpStatusCode instead of HttpStatus (3 services)
- Added commons-io dependency to Account-Service, Fund-Transfer, and Transaction-Service (required for FeignClientErrorDecoder in Spring Boot 3.x)
- All 7 services compile successfully
- All tests pass for Service-Registry, Sequence-Generator, and API-Gateway

Co-Authored-By: Sam Fertig <sam.fertig@codeium.com>
@devin-ai-integration

Copy link
Copy Markdown
Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants