java - 我应该将 jackson 的 ObjectMapper 声明为静态字段吗?

Jackson 库的 ObjectMapper 类 seems to be thread safe .

这是否意味着我应该将我的 ObjectMapper 声明为像这样的静态字段

class Me {
    private static final ObjectMapper mapper = new ObjectMapper();
}

而不是像这样的实例级字段?

class Me {
    private final ObjectMapper mapper = new ObjectMapper();
}

最佳答案

是的,这是安全且推荐的。

您引用的页面中唯一需要注意的是,一旦共享映射器,您就不能修改映射器的配置;但是您没有更改配置,所以这很好。如果您确实需要更改配置,您可以从静态 block 中进行,也可以。

编辑:(2013/10)

对于 2.0 及以上版本,可以通过注意有一个更好的方法来扩充上述内容:使用 ObjectWriterObjectReader 对象,它们可以由 构造对象映射器。 它们是完全不可变的、线程安全的,这意味着在理论上甚至不可能导致线程安全问题(如果代码尝试重新配置实例,ObjectMapper 可能会发生这种问题)。

https://stackoverflow.com/questions/3907929/

相关文章:

javascript - JSON.stringify 的反转?

javascript - 删除 JSON 属性

c# - 使用 Newtonsoft 将 JSON 反序列化为 .NET 对象(或者可能是 LINQ

javascript - 如何以编程方式美化 JSON?

javascript - 在对象数组中查找属性的最大值

json - 安装 json gem 时出错 'mkmf.rb can' t find header

javascript - 我不断收到 "Uncaught SyntaxError: Unexpect

ruby-on-rails - 如何使用 Ruby on Rails 解析 JSON?

ruby-on-rails - 如何将 ruby​​ 哈希对象转换为 JSON?

php - JSON 编码 MySQL 结果