В чем преимущество объявления ObjectMapper как бина? - PullRequest
0 голосов
/ 16 мая 2018

Допустим, я просто хочу простой экземпляр ObjectMapper объекта.Есть ли какое-либо преимущество, чтобы объявить его как бин?

@Bean
public ObjectMapper objectMapper() {
    return new ObjectMapper();
}

Почему бы просто не сделать новый ObjectMapper на new ObjectMapper() каждый раз, когда нам это нужно?

Или объявить его какстатический объект?

private static final ObjectMapper mapper = new ObjectMapper();

1 Ответ

0 голосов
/ 16 мая 2018

Вот примечание API о ObjectMapper

Экземпляры Mapper полностью поточно-безопасны при условии, что ВСЕ конфигурация экземпляра происходит раньшеЛЮБОЙ чтение или запись звонков.Если конфигурация преобразователя изменяется после первого использования, изменения могут вступать или не вступать в силу, а сами вызовы конфигурации могут завершаться ошибкой.

А вот рекомендация улучшить производительность Джексона :

Повторное использование тяжеловесных объектов: ObjectMapper (привязка данных) и JsonFactory (потоковый API). В меньшей степени вы также можете захотеть повторно использовать экземпляры ObjectReader и ObjectWriter - это всего лишь некоторая заморозкаторт, но они полностью поточнобезопасны и могут использоваться повторно

Итак, подведем итог:

  • ObjectMapper является поточно-ориентированным, пока вы это сделалине меняйте свою конфигурацию на лету

  • ObjectMapper инициализация - тяжелая операция

Поэтому объявите ObjectMapper как @Beanбудет:

  • Улучшение производительности анализа (так как вам не нужно повторно инициализировать экземпляр при анализе)

  • Сокращение использования памяти (меньше объектовсоздано)

  • Ваш ObjectMapperвернулся из @Bean метод полностью настроен.Это потокобезопасно.(Но, очевидно, не изменяйте @Autowired экземпляр XD)

  • Дайте общую конфигурацию для вашего приложения (например, часовой пояс, нулевая конфигурация отработки отказа ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...