Какова производительность Jackson ObjectMapper как статического поля в одноэлементном классе? - PullRequest
0 голосов
/ 27 декабря 2018

Я думаю об использовании 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(...)
        ...
    }
}
...