在Singleton类中,Jackson ObjectMapper作为静态字段的性能如何?

时间:2018-12-27 18:31:11

标签: spring jackson singleton jackson-databind

我正在考虑使用Jackson ObjectMapper对生产项目的数据进行序列化/反序列化。

现在,我已经在具有staticComponent方法的单例类(Spring serialize)中将ObjectMapper声明为deserialize字段。这两种方法都将使用此静态变量。 我知道Jackson ObjectMapper是线程安全的,但是我想知道当同时调用这些方法(数千次)时,会观察到任何性能问题吗?

我在某处读到对象序列化很繁重 冗长的操作,并且可能存在同步延迟,因为传入的线程可以在给定的时间被锁定,以等待锁的所有者完成JSON的序列化/反序列化。是真的吗?

我不想在每个序列化/反序列化方法中初始化ObjectMapper的新实例的原因是因为这是一项昂贵的操作。

@Component
public class converter {

    private static final ObjectMapper OBJECTMAPPER = new ObjectMapper().configure(
        DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).setSerializationInclusion(
                JsonInclude.Include.NON_NULL);

    public String serialize(Object value) {
        OBJECTMAPPER.writeValueAsString(...)
        ...
    }   
    public Object deserialize(String value) {
        OBJECTMAPPER.readValue(...)
        ...
    }
}

0 个答案:

没有答案