Использование пользовательского ObjectMapper для преобразования Spring XD Json в Java

Есть ли простой способ преобразовать полезную нагрузку JSON в объект Java с помощью пользовательского ObjectMapper (Jackson) или мне нужно предоставить собственный преобразователь типов. Я знаю, что мог бы использовать процессор, но как-то было бы неплохо использовать типы ввода и вывода определения потока.

Во втором случае: могу ли я предоставить собственный преобразователь типов для приложения/json в Java?

В документации говорится: «Пользователи customMessageConverters добавляются после стандартных преобразователей в указанном порядке. Поэтому обычно проще добавить преобразователи для новых типов мультимедиа, чем заменить существующие преобразователи».

Бьюсь об заклад, что существует существующий конвертер «application/json», но на первый взгляд я не смог найти дополнительной информации, можно ли вообще заменить существующие конвертеры.

Спасибо! Питер


person Peter Rietzler    schedule 09.12.2014    source источник


Ответы (1)


Если вы посмотрите на streams.xml Вы можете увидеть соответствующую конфигурацию. Настроенные списки используются для создания CompositeMessageConverter, который посещает каждый MessageConverter в порядке списка, пока не найдет тот, который может выполнить преобразование, и вернет ненулевой результат. Экземпляр CompositeConverter создается для каждого экземпляра модуля, сконфигурированного для преобразования (т. е. определяющего значение inputType или outputType) путем фильтрации списка возможных преобразователей сообщений, которые все наследуют AbstractFromMessageConverter. Список объединяется с теми, которые отвечают true на public boolean supportsTargetMimeType(MimeType mimeType) (где mimeType — это значение input/outputType). CompositeMessageConverter внедряется в соответствующий MessageChannel и преобразует полезные данные.

Есть несколько вещей, которые вы можете сделать. Вы можете переопределить определение компонента xd.messageConverters. Например, вы можете заменить JsonToPojoMessageConverter и PojoToJsonMessageConverter своими собственными подклассами. Вы также можете вставить свои собственные реализации в список перед приведенными выше преобразователями, и ваша реализация будет соответствовать только определенным объектам домена, для которых вам нужен пользовательский преобразователь JSON. Другая возможность — определить свой собственный MIME-тип и предоставить конвертеры для этого MIME-типа как customMessageConverters. В любом случае следуйте этим рекомендациям порасширение Spring XD

person dturanski    schedule 09.12.2014