Я думаю об использовании Jackson ObjectMapper для сериализации / десериализации данных для моего производственного проекта.
Сейчас я объявил ObjectMapper как поле static
в одноэлементном классе (Spring Component
), имеющем serialize
и 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(...)
...
}
}