Как настроить GraphQL SPQR для использования Gson вместо Jackson

Я заметил, что GraphQL-SPQR имеет по крайней мере пару свойств, которые вы можете настроить (например, graphql.spqr.gui.enabled=true). Есть ли конфигурация для указания использования Gson вместо Jackson для сериализации / десериализации объектов?

Если нет конфигурации, есть ли другой способ использовать Gson вместо Jackson для GraphQL-SPQR?

ПРИМЕЧАНИЕ: я уже использую spring.http.converters.preferred-json-mapper=gson в моем application.properties, чтобы переопределить spring в целом, чтобы использовать Gson вместо Jackson, но, похоже, он не отменяет преобразователь значений GraphQL-SPQR (по умолчанию Jackson).

Любая помощь приветствуется:)

1 ответ

Решение

Все, что вам нужно сделать, это зарегистрировать ValueMapperFactory фасоль, например

@Bean
public ValueMapperFactory gson() {
    return new GsonValueMapperFactory();
}

Чтобы настроить фабрику, используйте конструктор вместо конструктора:

@Bean
public ValueMapperFactory gson(Gson gson) {
    return GsonValueMapperFactory.builder()
            .withPrototype(gson)
            .build();
}

Вы можете найти большинство настраиваемых bean-компонентов, перечисленных здесь.

Я также думаю, что уважая spring.http.converters.preferred-json-mapperотличная идея. Я добавлю это в будущем выпуске. Следите за этой проблемой для прогресса.

Имейте в виду, что отображение Гсона намного проще, чем отображение Джексона. Он имеет гораздо меньше функций, принимает только поля в учетные записи (не параметры конструктора или сеттеры) и, вероятно, не будет вести себя точно так же, как сопоставление на основе Джексона. Но я полагаю, вы знаете об этом, поскольку явно хотите его использовать.

Другие вопросы по тегам