github Netflix/dgs-framework v12.0.0

latest release: v10.6.0
10 hours ago

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.
  • DgsSpringGraphQLAutoConfiguration registers a Jackson3DgsJsonMapper bean by default when tools.jackson.databind.json.JsonMapper is 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-jackson2 opt-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 on DgsGraphQLRequest, with default string overloads for ergonomics.
  • Response: DgsGraphQLResponse DefaultDgsGraphQLResponse.
  • Concrete clients: DgsCustomGraphQLClient, DgsCustomMonoGraphQLClient, DgsWebClientGraphQLClient, DgsRestClientGraphQLClient,DgsGraphqlSSESubscriptionGraphQLClient.
  • Options: DgsGraphQLRequestOptions (Jackson-agnostic; replaces GraphQLRequestOptions.createCustomObjectMapper).
  • Adapters: Jackson3DgsJsonMapperAdapter (default) and Jackson2DgsJsonMapperAdapter for 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 a DgsJsonMapper instead of an ObjectMapper.
  • Apps that want to stay having Jackson 2 autoconfigured can add graphql-dgs-jackson2 to 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

Full Changelog: v11.1.0...v12.0.0

Don't miss a new dgs-framework release

NewReleases is sending notifications on new releases.