Как настроить 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
отличная идея. Я добавлю это в будущем выпуске. Следите за этой проблемой для прогресса.
Имейте в виду, что отображение Гсона намного проще, чем отображение Джексона. Он имеет гораздо меньше функций, принимает только поля в учетные записи (не параметры конструктора или сеттеры) и, вероятно, не будет вести себя точно так же, как сопоставление на основе Джексона. Но я полагаю, вы знаете об этом, поскольку явно хотите его использовать.