Spring从2.0迁移到2.1后,Jackson模块解串器不起作用

时间:2019-05-23 08:02:10

标签: spring serialization jackson deserialization

在迁移之前,我们使用了一个bean来初始化序列化器/解串器,以便处理Timestamp-> LocalDateTime:

@Bean
Module dateModuleDeserialiser() {
    SimpleModule module = new SimpleModule();
    module.addDeserializer(LocalDateTime.class, new JsonDeserializer<LocalDateTime>() {
        @Override
        public LocalDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
            Long value = jsonParser.getLongValue();
            return new Timestamp(value).toLocalDateTime();
        }
    });

    return module;
}

一切正常,直到我们将Spring迁移到2.1。 我们做了这里标记的内容:https://spring.io/blog/2014/12/02/latest-jackson-integration-improvements-in-spring#with-spring-boot,但是现在它不再起作用了。

如果我们在反序列化器中放置一个断点,我们甚至都不会传递它……它被完全忽略了。

1 个答案:

答案 0 :(得分:0)

我们找到了另一种使用Spring和Jackson创建解串器/序列化器的方法。

我们没有为我们的反序列化器/序列化器创建带有@Bean批注的@Configuration类,而是创建了具有注释@JsonComponent(https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/jackson/JsonComponent.html)的新类,并将我们的反序列化器/序列化器都放入其中。现在一切正常。