在fastxml的ObjectMapper中使用SimpleDateFormat是不是安全[重复]

Posted

技术标签:

【中文标题】在fastxml的ObjectMapper中使用SimpleDateFormat是不是安全[重复]【英文标题】:Is it safe to use SimpleDateFormat in fasterxml's ObjectMapper [duplicate]在fastxml的ObjectMapper中使用SimpleDateFormat是否安全[重复] 【发布时间】:2016-02-13 19:29:57 【问题描述】:

大家!

我知道 SimpleDateFormat 不是线程安全的,我们不应该在多线程环境中使用单个实例!

ObjectMapper 是线程安全的,这很好。

现在我想知道在 ObjectMapper 中使用 SimpleDateFormat 是否安全! 这是我的自定义 ObjectMapper:

public class MyObjectMapper extends ObjectMapper 

    public MyObjectMapper() 
        configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
    


我在 springmvc 的配置中使用它。

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) 
    MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
    jsonConverter.setObjectMapper(new MyObjectMapper());
    converters.add(jsonConverter);

如果是,ObjectMapper 是如何做到的!

如果不是,我应该使用什么 DateFormat!

谢谢!

【问题讨论】:

我将它与 ObjectMapper 一起使用!我想也许 ObjectMapper 有一些同步机制来保证它的安全! 【参考方案1】:

在Should I declare Jackson's ObjectMapper as a static field?上查看@StaxMan 的cmets

基线:

DateFormat 在 Jackson 中被克隆,因此使用 SimpleDateFormat 是安全的。

【讨论】:

谢谢!这真的很有帮助。

以上是关于在fastxml的ObjectMapper中使用SimpleDateFormat是不是安全[重复]的主要内容,如果未能解决你的问题,请参考以下文章

fastxml Jackson annotation使用小记

如何使用 fastxml jackson 更改 xml 类名?

Apache Beam 的 BigQueryIO (Java):无法将 TIMESTAMP 字段写入 BigQuery——fastxml.jackson 异常“类型不支持”

如何使用 Spring application.properties 自定义 Jackson ObjectMapper?

如何使用 AlamoFire/ObjectMapper 访问嵌入在 JSON 字典中的链接?

如何在 JUnitTests 中使用 ObjectMapper - Spring Boot 应用程序