Aunque es seguro declarar un ObjectMapper estático en términos de seguridad de subprocesos, debe tener en cuenta que la construcción de variables Object estáticas en Java se considera una mala práctica. Para obtener más detalles, consulte ¿Por qué las variables estáticas se consideran malas? (y si quieres, mi respuesta )
En resumen, las estadísticas deben evitarse porque dificultan la redacción de pruebas unitarias concisas. Por ejemplo, con un ObjectMapper final estático, no puede intercambiar la serialización JSON por código ficticio o no operativo.
Además, una final estática le impide volver a configurar ObjectMapper en tiempo de ejecución. Puede que no imagines una razón para eso ahora, pero si te encierras en un patrón final estático, nada menos que derribar el cargador de clases te permitirá reiniciarlo.
En el caso de ObjectMapper está bien, pero en general es una mala práctica y no hay ninguna ventaja sobre el uso de un patrón singleton o inversión de control para administrar sus objetos de larga duración.
ObjectMapper
todavía es seguro para subprocesos después de queObjectMapper#setDateFormat()
se llama. Se sabe queSimpleDateFormat
no es seguro para subprocesos , porObjectMapper
lo que no lo será a menos que clone, por ejemplo,SerializationConfig
antes de cada unowriteValue()
(dudo). ¿Podrías desacreditar mi miedo?