Хоча оголосити статичний ObjectMapper безпечно з точки зору безпеки потоку, ви повинні знати, що побудова статичних змінних об’єктів на Java вважається поганою практикою. Детальніше див. Чому статичні змінні вважаються злими? (і якщо ви хочете, моя відповідь )
Коротше кажучи, статики слід уникати, оскільки це ускладнює написання стислих одиничних тестів. Наприклад, за допомогою статичного кінцевого ObjectMapper ви не можете замінити серіалізацію JSON на манекенний код або на неоперацію.
Крім того, статичний фінал заважає вам коли-небудь перенастроювати ObjectMapper під час виконання. Ви можете не передбачити причину для цього зараз, але якщо ви зафіксуєтеся в статичному кінцевому шаблоні, нічого, крім зриву завантажувача, не дозволить вам його ініціалізувати.
У випадку з ObjectMapper його штрафують, але в цілому це погана практика, і немає переваги, ніж використання однотонної картини або інверсії управління для управління вашими довгоживучими об'єктами.
ObjectMapper
все-таки безпечний потік післяObjectMapper#setDateFormat()
викликається. Відомо, щоSimpleDateFormat
це не безпечно для потоків , томуObjectMapper
не буде, якщо воно не клонується, наприклад,SerializationConfig
перед кожнимwriteValue()
(я сумніваюся). Не могли б ви розвінчувати мій страх?