Embora seja seguro declarar um ObjectMapper estático em termos de segurança de encadeamento, você deve estar ciente de que a construção de variáveis estáticas de Objeto em Java é considerada uma prática ruim. Para mais detalhes, consulte Por que variáveis estáticas são consideradas más? (e se você quiser, minha resposta )
Em resumo, a estática deve ser evitada, pois dificulta a criação de testes de unidade concisos. Por exemplo, com um ObjectMapper final estático, você não pode trocar a serialização JSON por código fictício ou não operacional.
Além disso, uma final estática impede que você reconfigure o ObjectMapper em tempo de execução. Você pode não imaginar uma razão para isso agora, mas se você se prender a um padrão final estático, nada além de derrubar o carregador de classes permitirá que você o reinicialize.
No caso do ObjectMapper, tudo bem, mas, em geral, é uma prática ruim e não há vantagem em usar um padrão singleton ou inversão de controle para gerenciar seus objetos de vida longa.
ObjectMapper
ainda é seguro para threads depois deObjectMapper#setDateFormat()
ser chamado. Sabe-se queSimpleDateFormat
não é seguro para threads , portantoObjectMapper
, não será, a menos que seja clonado, por exemplo,SerializationConfig
antes de cada umwriteValue()
(duvido). Você poderia desmascarar meu medo?