Jackson 3 support
DGS now supports Jackson 3 (tools.jackson.*) alongside the existing Jackson 2 (com.fasterxml.jackson.*) integration. Jackson 3 is the auto-configured default while Jackson 2 remains supported as an opt-in.
Core Changes (autoconfigured)
- New
DgsJsonMapper(com.netflix.graphql.dgs.json.DgsJsonMapper) — a Jackson-agnostic abstraction the framework uses internally for serialization, deserialization, and JSON-Path configuration. DgsSpringGraphQLAutoConfigurationregisters aJackson3DgsJsonMapperbean by default whentools.jackson.databind.json.JsonMapperis on the classpath.- New property
dgs.graphql.preferred-json-mapper(jackson3|jackson2) lets you force a mapper when both versions are available on the classpath. - New
graphql-dgs-jackson2opt-in module — pull this in to restore Jackson-2-based auto-configuration on apps not ready to move. - Obvious failure mode when no mapper is on the classpath:
DgsJsonMapperMissingException+DgsMapperFailureAnalyzer
graphql-dgs-client (new client classes)
A parallel set of Dgs* client classes/interfaces that program against DgsJsonMapper instead of a Jackson 2 ObjectMapper.
The existing GraphQLClient /
MonoGraphQLClient / ReactiveGraphQLClient and CustomGraphQLClient / WebClientGraphQLClient / RestClientGraphQLClient types are deprecated but kept for
binary compatibility — they now extend the new interfaces via bridge defaults so libraries compiled against older versions continue to link.
New surface:
- Interfaces:
DgsGraphQLClient,DgsMonoGraphQLClient,DgsReactiveGraphQLClient— single-method contract centered onDgsGraphQLRequest, with default string overloads for ergonomics. - Response:
DgsGraphQLResponseDefaultDgsGraphQLResponse. - Concrete clients:
DgsCustomGraphQLClient,DgsCustomMonoGraphQLClient,DgsWebClientGraphQLClient,DgsRestClientGraphQLClient,DgsGraphqlSSESubscriptionGraphQLClient. - Options:
DgsGraphQLRequestOptions(Jackson-agnostic; replacesGraphQLRequestOptions.createCustomObjectMapper). - Adapters:
Jackson3DgsJsonMapperAdapter(default) andJackson2DgsJsonMapperAdapterfor callers still on Jackson 2.
Migration
- No action required for existing apps — Jackson 2 client classes continue to work and the bridge keeps old library bytecode linkable.
- New code should target the
Dgs*interfaces and pass aDgsJsonMapperinstead of anObjectMapper. - Apps that want to stay having Jackson 2 autoconfigured can add
graphql-dgs-jackson2to their classpath. - Following the precedent set by Spring Boot 4, apps wishing to use jackson2 and not to have jackson3 on the classpath at all should exclude jackson3 dependencies from their classpath.
What's Changed
- Add a Spring Boot version check for version compatibility by @paulbakker in #2256
- Bump actions/checkout from 5.0.0 to 6.0.1 by @dependabot[bot] in #2243
- Bump actions/stale from 9.1.0 to 10.1.1 by @dependabot[bot] in #2241
- Bump actions/cache from 4.2.4 to 5.0.1 by @dependabot[bot] in #2244
- Bump actions/upload-artifact from 4 to 6 by @dependabot[bot] in #2245
- Bump org.jlleitschuh.gradle.ktlint from 13.1.0 to 14.0.1 by @dependabot[bot] in #2240
- Update Gradle Wrapper from 8.14.1 to 8.14.3 by @github-actions[bot] in #2189
- Bump actions/cache from 5.0.1 to 5.0.2 by @dependabot[bot] in #2264
- Bump org.apache.logging.log4j:log4j-api from 2.25.2 to 2.25.3 by @dependabot[bot] in #2262
- Add flag to turn off apollo federation transform on the schema by @jjacobs44 in #2258
- Bump actions/checkout from 6.0.1 to 6.0.2 by @dependabot[bot] in #2269
- Avoid expensive lookup in DefaultDgsDataLoaderProvider by @kilink in #2273
- Various clean up by @kilink in #2274
- Bump actions/cache from 5.0.2 to 5.0.3 by @dependabot[bot] in #2271
- Bump actions/stale from 10.1.1 to 10.2.0 by @dependabot[bot] in #2278
- Bump org.jetbrains:annotations from 26.0.2-1 to 26.1.0 by @dependabot[bot] in #2279
- Update nebula and gradle wrapper by @jjacobs44 in #2268
- Bump gradle-wrapper from 8.14.3 to 9.4.0 by @dependabot[bot] in #2286
- Bump org.jlleitschuh.gradle.ktlint from 14.0.1 to 14.1.0 by @dependabot[bot] in #2285
- Bump actions/cache from 5.0.3 to 5.0.4 by @dependabot[bot] in #2292
- Bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #2282
- Bump dorny/test-reporter from 2 to 3 by @dependabot[bot] in #2291
- Jackson3 support with opt-in jackson2 support by @jjacobs44 in #2299
- Update publish workflow file to use java 17 by @jjacobs44 in #2307
Full Changelog: v11.1.0...v12.0.0