当前位置: 首页 > 知识库问答 >
问题:

重写Spring Integration dsl使用的fasterxml jackson对象映射器

楚浩然
2023-03-14

使用变压器。toJson()我的json日期如下所示:

“createdDate”:{“year”:2017,“month”:“OCTOBER”,“monthValue”:10,“dayOfMonth”:25,“hour”:7,“minute”:57,“second”:36,“nano”:972000000,“dayOfWeek”:“星期三”,“dayOfYear”:298,“年表”:{“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();
}

兔子队列的消费者期望格式“yyyy-MM-dd'T'HH: mm: ss. SSSZ”

是否有任何方法可以覆盖Spring集成使用的默认ObjectMapper?

例如,我在我的Web api配置中有这个配置,它扩展了WebMvcConfigrerAdapter:

@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);
}

是否有办法在Spring集成中重用ObjtMapper bean,以便在我的所有出站endpoint、Web api超文本传输协议或集成ampq中的映射配置相同?

共有1个答案

拓拔麒
2023-03-14

有一个重载版本的Transformers.toJson()

Transformers.toJson(new Jackson2JsonObjectMapper(objectMapper))
 类似资料:
  • 假设我有一个Foo对象列表。Foo上有一个属性,我必须使用它从数据源中获取Bar对象。然后我必须将每个bar对象映射回我得到bar的原始Foo对象。 我的尝试如下:

  • 我想使用Java流按对用户列表进行分组。 例如,我有。

  • 我正在从React中的外部api接收数据 我有一个目标 我试图通过它进行映射,以便能够渲染数据,即它在屏幕上显示的“bitfinex:1.2、blockfi:2.3等” 但是我得到了一个错误,说它不是一个函数。 我做错了什么?

  • 我有一个对象,我正试图映射到。现在这个有一个名为的枚举,其中包含一些值。我想使用将它们映射到中的其他枚举值。以下是我到目前为止的代码: 当我尝试编译它时,我得到了错误:

  • 在Dozer的帮助下,我想将映射到DTO类 但是这两种设置

  • 我正在使用下面的代码片段映射对象 它没有映射,但当我添加这个时,它工作得很好 但却无法理解它的功能<代码>导入={Instant.class,DateTimeFormatter.class}它如何帮助映射对象?