我应该将Jackson的ObjectMapper声明为静态字段吗?

问题:

杰克逊图书馆的ObjectMapperseems to be thread safe
这是否意味着我应该将我的ObjectMapper声明为静态字段

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

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

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

回答:

是的,这是安全和推荐的。
您引用的页面中唯一的注意事项是,一旦共享,您就无法修改映射程序的配置;但是您没有更改配置,所以这样很好。如果您确实需要更改配置,则可以从静态块中执行此操作,这样也会很好。
 编辑:(2013/10)
使用2.0以上,可以通过注意到有更好的方法来增强以上的含义:使用ObjectWriterObjectReader对象,可以由ObjectMapper构造。
它们是完全不变的,线程安全的,这意味着在理论上甚至不可能导致线程安全问题(如果代码尝试重新配置实例,则可能会发生ObjectMapper)。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Should I declare Jackson’s ObjectMapper as a static field?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

65 − = 63