feat: migrate from Java 11 / Spring Boot 2.6.3 to Java 21 / Spring Boot 3.3.5#574
Open
devin-ai-integration[bot] wants to merge 14 commits intomasterfrom
Open
feat: migrate from Java 11 / Spring Boot 2.6.3 to Java 21 / Spring Boot 3.3.5#574devin-ai-integration[bot] wants to merge 14 commits intomasterfrom
devin-ai-integration[bot] wants to merge 14 commits intomasterfrom
Conversation
Co-Authored-By: Shawn Azman <shawn.d.azman@gmail.com>
Co-Authored-By: Shawn Azman <shawn.d.azman@gmail.com>
…ain) Co-Authored-By: Shawn Azman <shawn.d.azman@gmail.com>
Co-Authored-By: Shawn Azman <shawn.d.azman@gmail.com>
…lity Co-Authored-By: Shawn Azman <shawn.d.azman@gmail.com>
Co-Authored-By: Shawn Azman <shawn.d.azman@gmail.com>
…' into devin/1777487735-java21-spring-boot3-migration
… into devin/1777487735-java21-spring-boot3-migration
…evin/1777487735-java21-spring-boot3-migration
…l' into devin/1777487735-java21-spring-boot3-migration
…+ DGS v8) Co-Authored-By: Shawn Azman <shawn.d.azman@gmail.com>
- Upgrade DGS from 8.7.1 to 9.1.2 to fix java-dataloader version conflict - Convert graphql.relay.PageInfo to io.spring.graphql.types.PageInfo (DGS codegen) - Fix handleMethodArgumentNotValid signature for Spring 6 (HttpStatusCode) - Apply spotless formatting to all modified files Co-Authored-By: Shawn Azman <shawn.d.azman@gmail.com>
…ncy errors Co-Authored-By: Shawn Azman <shawn.d.azman@gmail.com>
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
…rite Co-Authored-By: Shawn Azman <shawn.d.azman@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Full migration of the application from Java 11 / Spring Boot 2.6.3 to Java 21 / Spring Boot 3.3.5, executed across 6 parallel workstreams then integrated and verified.
Changes by workstream:
1. Build Configuration
2.6.3→3.3.5, dependency-management1.0.11.RELEASE→1.1.611→21, Gradle7.4→8.10.25.0.6→6.2.1, Spotless6.2.1→6.25.02.2.2→3.0.3, JJWT0.11.2→0.12.6, SQLite3.36.0.3→3.45.3.04.5.1→5.4.0joda-time:joda-time:2.10.13graphql-dgs-spring-boot-starter:4.9.21→graphql-dgs-spring-graphql-starter:9.1.22. javax → jakarta Namespace
javax.*imports tojakarta.*across 20 files (javax.servlet,javax.validation)javax.cryptoleft untouched (JDK class)3. Spring Security Rewrite
WebSecurityConfigurerAdapter(removed in Spring Security 6)SecurityFilterChainbean using lambda DSLantMatchers→requestMatchersCorsConfigurationSourcebean with original CORS config (all origins, specific methods/headers)4. JJWT 0.12.x API Migration
setSubject()→subject(),setExpiration()→expiration()parserBuilder().setSigningKey().build().parseClaimsJws()→parser().verifyWith().build().parseSignedClaims()getBody()→getPayload()SecretKeySpec→Keys.hmacShaKeyFor()5. Joda-Time Removal
org.joda.time.DateTimewithjava.time.Instantacross 16 filesDateTimeHandlerforjava.time.Instant6. DGS Framework v8+ Compatibility
GraphQLCustomizeExceptionHandlerfor DGS 8+ API (handleExceptionwithCompletableFuture)UserMutationjakarta importsIntegration Fixes (post-merge)
8.7.1→9.1.2to resolvejava-dataloaderversion conflict with codegengraphql.relay.PageInfo→io.spring.graphql.types.PageInfo(DGS codegen v6 change)handleMethodArgumentNotValidsignature (HttpStatus→HttpStatusCodein Spring 6)src/to fix Gradle 8 implicit dependency errorsReview & Testing Checklist for Human
./gradlew clean buildpasses with Java 21./gradlew test— all existing tests pass./gradlew bootRunthencurl http://localhost:8080/tagshttp://localhost:8080/graphqlwith a tags or articles queryNotes
9.1.2(beyond the originally requested8.7.1) because DGS8.7.1has a strictjava-dataloaderversion conflict with codegen6.2.1. DGS9.1.2aligns withgraphql-java 22.x.GraphQLCustomizeExceptionHandler.java(pre-existing raw type usage).Link to Devin session: https://app.devin.ai/sessions/d105115fe8e14c10ace163609ffc7862
Requested by: @ShawnAzman
Devin Review