Spring 与 Joda DateTime 集成的 ObjectToMapTransformer

Spring Integration's ObjectToMapTransformer with Joda DateTime

ObjectToMapTransformer transformer = new ObjectToMapTransformer();
transformer.setShouldFlattenKeys(true);

如何使用此转换器将 Joda DateTime 保存为字符串表示形式?

我的解决方案是复制ObjectToMapTransformer 的源代码,然后创建您自己的ObjectToMapTransformer 和Jackson2JsonObjectMapper。

在ObjectToMapTransformer中,添加一个getter函数来获取私有成员jsonObjectMapper。

在Jackson2JsonObjectMapper中,添加一个getter函数来获取私有成员objectMapper。

使用自己的Jackson2JsonObjectMapper在ObjectToMapTransformer中创建jsonObjectMapper

基本上,替换

private final JsonObjectMapper<?, ?> jsonObjectMapper = JsonObjectMapperProvider.newInstance();

private final JsonObjectMapper<?, ?> jsonObjectMapper = new Jackson2JsonObjectMapper();

记得导入您自己创建的 类 而不是 org.springframework 导入

这样就可以获取到ObjectMapper的实例,然后配置ObjectMapper

    JsonObjectMapper<?, ?> jsonObjectMapper = transformer.getJsonObjectMapper();
    if(jsonObjectMapper instanceof Jackson2JsonObjectMapper){
        System.out.println("Configuring ObjectToMapTransformer Jackson2JsonObjectMapper");
        Jackson2JsonObjectMapper jackson2JsonObjectMapper = (Jackson2JsonObjectMapper)jsonObjectMapper;
        ObjectMapper mapper = jackson2JsonObjectMapper.getObjectMapper();
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        mapper.registerModule(new JodaModule());
    }