我正在考虑使用Jackson ObjectMapper对生产项目的数据进行序列化/反序列化。
现在,我已经在具有static
和Component
方法的单例类(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(...)
...
}
}