Переопределить Fastxml jackson ObjectMapper, используемый Spring Integration dsl

Используя Transformers.toJson (), моя дата json выглядит так:

«createdDate»: {«год»: 2017, «месяц»: «ОКТЯБРЬ», «monthValue»: 10, «dayOfMonth»: 25, «час»: 7, «минута»: 57, «секунда»: 36, " nano ": 972000000," dayOfWeek ":" WEDNESDAY "," dayOfYear ": 298," chronology ": {" calendarType ":" iso8601 "," id ":" ISO "}}

Вот исходящая конфигурация ampq:

@Bean
public IntegrationFlow outboundCdrRabbitFlowDefinition() {
    return IntegrationFlows.from(CHANNEL_NAME)
            .transform(Transformers.toJson())
            .handle(Amqp.outboundAdapter(new RabbitTemplate(cachingConnectionFactory))
                    .routingKey("routing-key"))
            .get();
}

Потребитель очереди с кроликом ожидает формат «гггг-ММ-дд'T'HH: мм: сс.СССЗ».

Есть ли способ переопределить ObjectMapper по умолчанию, используемый весенней интеграцией?

Например, у меня есть эта конфигурация в моей конфигурации веб-API, которая расширяет WebMvcConfigurerAdapter:

@Bean
public ObjectMapper objectMapper() {
    ObjectMapper mapper = new ObjectMapper();
    mapper.setTimeZone(UTC_TIME_ZONE);
    mapper.setDateFormat(ISO_8601_DATE_FORMAT);
    mapper.registerModule(new Jdk8Module());
    mapper.registerModule(new JavaTimeModule());
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    return mapper;
}

@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
    MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
    mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper());
    return mappingJackson2HttpMessageConverter;
}

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    converters.add(mappingJackson2HttpMessageConverter());
    super.configureMessageConverters(converters);
}

Есть ли способ повторно использовать bean-компонент objectMapper в Spring Integration, чтобы конфигурация сопоставления была одинаковой для всех моих исходящих конечных точек, веб-api http или интеграции ampq?


person heuts    schedule 25.10.2017    source источник


Ответы (1)


Есть перегруженная версия Transformers.toJson():

Transformers.toJson(new Jackson2JsonObjectMapper(objectMapper))
person Artem Bilan    schedule 25.10.2017