From 475e3b4f46342e583d3f72ecc3780630fb13af0d Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 3 Nov 2025 22:26:50 +0000 Subject: [PATCH 1/2] Upgrade Spring Boot from 2.7.x to 3.5.7 and Spring Cloud to 2025.0.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Updated all 7 microservice pom.xml files with Spring Boot 3.5.7 and Spring Cloud 2025.0.0 - Migrated javax.* imports to jakarta.* across all entity and service classes - Updated Spring Security configuration to use lambda DSL for Spring Security 6.0 compatibility - Removed javax.ws.rs exclusion from User-Service (no longer needed in Spring Boot 3.x) Services upgraded: - API-Gateway: 2.7.14 → 3.5.7 - Service-Registry: 2.7.14 → 3.5.7 - User-Service: 2.7.14 → 3.5.7 - Account-Service: 2.7.15 → 3.5.7 - Fund-Transfer: 2.7.14 → 3.5.7 - Transaction-Service: 2.7.15 → 3.5.7 - Sequence-Generator: 2.7.15 → 3.5.7 Co-Authored-By: Sam Fertig --- API-Gateway/pom.xml | 4 ++-- .../api/gateway/config/SecurityConfig.java | 20 ++++++++----------- Account-Service/pom.xml | 4 ++-- .../account/service/model/entity/Account.java | 2 +- Fund-Transfer/pom.xml | 4 ++-- .../model/entity/FundTransfer.java | 4 ++-- Sequence-Generator/pom.xml | 4 ++-- .../generator/model/entity/Sequence.java | 8 ++++---- Service-Registry/pom.xml | 4 ++-- Transaction-Service/pom.xml | 4 ++-- .../model/entity/Transaction.java | 2 +- User-Service/pom.xml | 10 ++-------- .../user/service/model/entity/User.java | 4 ++-- .../service/model/entity/UserProfile.java | 8 ++++---- .../implementation/UserServiceImpl.java | 2 +- 15 files changed, 37 insertions(+), 47 deletions(-) diff --git a/API-Gateway/pom.xml b/API-Gateway/pom.xml index 3bd9a5d..eddc667 100644 --- a/API-Gateway/pom.xml +++ b/API-Gateway/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 2.7.14 + 3.5.7 org.training @@ -15,7 +15,7 @@ API Gateway 17 - 2021.0.8 + 2025.0.0 samfert-codeium diff --git a/API-Gateway/src/main/java/org/training/api/gateway/config/SecurityConfig.java b/API-Gateway/src/main/java/org/training/api/gateway/config/SecurityConfig.java index a028a68..931f6ab 100644 --- a/API-Gateway/src/main/java/org/training/api/gateway/config/SecurityConfig.java +++ b/API-Gateway/src/main/java/org/training/api/gateway/config/SecurityConfig.java @@ -13,17 +13,13 @@ public class SecurityConfig { @Bean public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) { http - .authorizeExchange() - //ALLOWING REGISTER API FOR DIRECT ACCESS - .pathMatchers("/api/users/register").permitAll() - //ALL OTHER APIS ARE AUTHENTICATED - .anyExchange().authenticated() - .and() - .csrf().disable() - .oauth2Login() - .and() - .oauth2ResourceServer() - .jwt(); + .authorizeExchange(exchanges -> exchanges + .pathMatchers("/api/users/register").permitAll() + .anyExchange().authenticated() + ) + .csrf(csrf -> csrf.disable()) + .oauth2Login(oauth2 -> oauth2) + .oauth2ResourceServer(oauth2 -> oauth2.jwt(jwt -> jwt)); return http.build(); } -} \ No newline at end of file +} diff --git a/Account-Service/pom.xml b/Account-Service/pom.xml index 759bf48..1979a58 100644 --- a/Account-Service/pom.xml +++ b/Account-Service/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 2.7.15 + 3.5.7 org.training @@ -15,7 +15,7 @@ Account Service 17 - 2021.0.8 + 2025.0.0 samfert-codeium diff --git a/Account-Service/src/main/java/org/training/account/service/model/entity/Account.java b/Account-Service/src/main/java/org/training/account/service/model/entity/Account.java index 19f9532..dd311bd 100644 --- a/Account-Service/src/main/java/org/training/account/service/model/entity/Account.java +++ b/Account-Service/src/main/java/org/training/account/service/model/entity/Account.java @@ -8,7 +8,7 @@ import org.training.account.service.model.AccountStatus; import org.training.account.service.model.AccountType; -import javax.persistence.*; +import jakarta.persistence.*; import java.math.BigDecimal; import java.time.LocalDate; diff --git a/Fund-Transfer/pom.xml b/Fund-Transfer/pom.xml index d6abb65..473c147 100644 --- a/Fund-Transfer/pom.xml +++ b/Fund-Transfer/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 2.7.14 + 3.5.7 org.training @@ -15,7 +15,7 @@ Fund Transfer 17 - 2021.0.8 + 2025.0.0 samfert-codeium diff --git a/Fund-Transfer/src/main/java/org/training/fundtransfer/model/entity/FundTransfer.java b/Fund-Transfer/src/main/java/org/training/fundtransfer/model/entity/FundTransfer.java index eff0c47..ee84d35 100644 --- a/Fund-Transfer/src/main/java/org/training/fundtransfer/model/entity/FundTransfer.java +++ b/Fund-Transfer/src/main/java/org/training/fundtransfer/model/entity/FundTransfer.java @@ -8,7 +8,7 @@ import org.training.fundtransfer.model.TransactionStatus; import org.training.fundtransfer.model.TransferType; -import javax.persistence.*; +import jakarta.persistence.*; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -39,4 +39,4 @@ public class FundTransfer { @CreationTimestamp private LocalDateTime transferredOn; -} \ No newline at end of file +} diff --git a/Sequence-Generator/pom.xml b/Sequence-Generator/pom.xml index b77a1ed..a205076 100644 --- a/Sequence-Generator/pom.xml +++ b/Sequence-Generator/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 2.7.15 + 3.5.7 org.training @@ -15,7 +15,7 @@ Sequence Generator 17 - 2021.0.8 + 2025.0.0 samfert-codeium diff --git a/Sequence-Generator/src/main/java/org/training/sequence/generator/model/entity/Sequence.java b/Sequence-Generator/src/main/java/org/training/sequence/generator/model/entity/Sequence.java index 94e8170..3cf700f 100644 --- a/Sequence-Generator/src/main/java/org/training/sequence/generator/model/entity/Sequence.java +++ b/Sequence-Generator/src/main/java/org/training/sequence/generator/model/entity/Sequence.java @@ -5,10 +5,10 @@ import lombok.Data; import lombok.NoArgsConstructor; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; @Entity @Data diff --git a/Service-Registry/pom.xml b/Service-Registry/pom.xml index 1e47bea..24e0e67 100644 --- a/Service-Registry/pom.xml +++ b/Service-Registry/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 2.7.14 + 3.5.7 org.training @@ -15,7 +15,7 @@ Service Registry 17 - 2021.0.8 + 2025.0.0 samfert-codeium diff --git a/Transaction-Service/pom.xml b/Transaction-Service/pom.xml index 83deb58..d2d7406 100644 --- a/Transaction-Service/pom.xml +++ b/Transaction-Service/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 2.7.15 + 3.5.7 org.training @@ -15,7 +15,7 @@ Transaction Service 17 - 2021.0.8 + 2025.0.0 samfert-codeium diff --git a/Transaction-Service/src/main/java/org/training/transactions/model/entity/Transaction.java b/Transaction-Service/src/main/java/org/training/transactions/model/entity/Transaction.java index fe0f837..2e0f640 100644 --- a/Transaction-Service/src/main/java/org/training/transactions/model/entity/Transaction.java +++ b/Transaction-Service/src/main/java/org/training/transactions/model/entity/Transaction.java @@ -8,7 +8,7 @@ import org.training.transactions.model.TransactionStatus; import org.training.transactions.model.TransactionType; -import javax.persistence.*; +import jakarta.persistence.*; import java.math.BigDecimal; import java.time.LocalDateTime; diff --git a/User-Service/pom.xml b/User-Service/pom.xml index 002edc5..8aa829b 100644 --- a/User-Service/pom.xml +++ b/User-Service/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 2.7.14 + 3.5.7 org.training @@ -15,7 +15,7 @@ User Service 17 - 2021.0.8 + 2025.0.0 samfert-codeium @@ -38,12 +38,6 @@ org.springframework.cloud spring-cloud-starter-netflix-eureka-client - - - javax.ws.rs - jsr311-api - - org.springframework.boot diff --git a/User-Service/src/main/java/org/training/user/service/model/entity/User.java b/User-Service/src/main/java/org/training/user/service/model/entity/User.java index cf0de9c..d10f342 100644 --- a/User-Service/src/main/java/org/training/user/service/model/entity/User.java +++ b/User-Service/src/main/java/org/training/user/service/model/entity/User.java @@ -7,7 +7,7 @@ import org.hibernate.annotations.CreationTimestamp; import org.training.user.service.model.Status; -import javax.persistence.*; +import jakarta.persistence.*; import java.time.LocalDate; @Entity @@ -38,4 +38,4 @@ public class User { @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "user_profile_id", referencedColumnName = "userProfileId") private UserProfile userProfile; -} \ No newline at end of file +} diff --git a/User-Service/src/main/java/org/training/user/service/model/entity/UserProfile.java b/User-Service/src/main/java/org/training/user/service/model/entity/UserProfile.java index e0a983f..f317bf3 100644 --- a/User-Service/src/main/java/org/training/user/service/model/entity/UserProfile.java +++ b/User-Service/src/main/java/org/training/user/service/model/entity/UserProfile.java @@ -5,10 +5,10 @@ import lombok.Data; import lombok.NoArgsConstructor; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; @Entity @Data diff --git a/User-Service/src/main/java/org/training/user/service/service/implementation/UserServiceImpl.java b/User-Service/src/main/java/org/training/user/service/service/implementation/UserServiceImpl.java index 7e416ba..8cbfcf4 100644 --- a/User-Service/src/main/java/org/training/user/service/service/implementation/UserServiceImpl.java +++ b/User-Service/src/main/java/org/training/user/service/service/implementation/UserServiceImpl.java @@ -27,7 +27,7 @@ import org.training.user.service.service.UserService; import org.training.user.service.utils.FieldChecker; -import javax.transaction.Transactional; +import jakarta.transaction.Transactional; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; From a0c21b8ad13e32badf7c654dbd80369733d903a0 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Mon, 3 Nov 2025 22:30:20 +0000 Subject: [PATCH 2/2] Fix Spring Cloud 2022.0.0+ breaking changes - Remove @EnableEurekaClient annotation from API-Gateway, User-Service, and Transaction-Service (no longer needed - Eureka client is now auto-configured) - Fix Spring Security 6.0 lambda DSL syntax in SecurityConfig using Customizer.withDefaults() - Add Customizer import to SecurityConfig These changes are required for compatibility with Spring Cloud 2025.0.0 (Northfields release train) Co-Authored-By: Sam Fertig --- .../java/org/training/api/gateway/ApiGatewayApplication.java | 2 -- .../java/org/training/api/gateway/config/SecurityConfig.java | 5 +++-- .../training/transactions/TransactionServiceApplication.java | 2 -- .../org/training/user/service/UserServiceApplication.java | 2 -- 4 files changed, 3 insertions(+), 8 deletions(-) diff --git a/API-Gateway/src/main/java/org/training/api/gateway/ApiGatewayApplication.java b/API-Gateway/src/main/java/org/training/api/gateway/ApiGatewayApplication.java index 5d16c71..5c7a3ef 100644 --- a/API-Gateway/src/main/java/org/training/api/gateway/ApiGatewayApplication.java +++ b/API-Gateway/src/main/java/org/training/api/gateway/ApiGatewayApplication.java @@ -2,10 +2,8 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication -@EnableEurekaClient public class ApiGatewayApplication { public static void main(String[] args) { diff --git a/API-Gateway/src/main/java/org/training/api/gateway/config/SecurityConfig.java b/API-Gateway/src/main/java/org/training/api/gateway/config/SecurityConfig.java index 931f6ab..5316127 100644 --- a/API-Gateway/src/main/java/org/training/api/gateway/config/SecurityConfig.java +++ b/API-Gateway/src/main/java/org/training/api/gateway/config/SecurityConfig.java @@ -2,6 +2,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity; import org.springframework.security.config.web.server.ServerHttpSecurity; import org.springframework.security.web.server.SecurityWebFilterChain; @@ -18,8 +19,8 @@ public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) { .anyExchange().authenticated() ) .csrf(csrf -> csrf.disable()) - .oauth2Login(oauth2 -> oauth2) - .oauth2ResourceServer(oauth2 -> oauth2.jwt(jwt -> jwt)); + .oauth2Login(Customizer.withDefaults()) + .oauth2ResourceServer(oauth2 -> oauth2.jwt(Customizer.withDefaults())); return http.build(); } } diff --git a/Transaction-Service/src/main/java/org/training/transactions/TransactionServiceApplication.java b/Transaction-Service/src/main/java/org/training/transactions/TransactionServiceApplication.java index a729304..d2a4512 100644 --- a/Transaction-Service/src/main/java/org/training/transactions/TransactionServiceApplication.java +++ b/Transaction-Service/src/main/java/org/training/transactions/TransactionServiceApplication.java @@ -2,12 +2,10 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication @EnableFeignClients -@EnableEurekaClient public class TransactionServiceApplication { public static void main(String[] args) { diff --git a/User-Service/src/main/java/org/training/user/service/UserServiceApplication.java b/User-Service/src/main/java/org/training/user/service/UserServiceApplication.java index 70d2cbf..adf4771 100644 --- a/User-Service/src/main/java/org/training/user/service/UserServiceApplication.java +++ b/User-Service/src/main/java/org/training/user/service/UserServiceApplication.java @@ -2,12 +2,10 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.netflix.eureka.EnableEurekaClient; import org.springframework.cloud.openfeign.EnableFeignClients; @SpringBootApplication @EnableFeignClients -@EnableEurekaClient public class UserServiceApplication { public static void main(String[] args) {