【发布时间】:2017-09-23 11:54:52
【问题描述】:
Mapper 实例是完全线程安全的,无需创建一个单独使用的映射器,但可以更改映射器的配置。
虽然 ObjectMapper 有copy 功能可以根据现有映射器复制配置以进行自定义,但如果我共享一个映射器,则不能保证当有人想要自定义映射器时,他们会复制共享的映射器。所以我想要一个不可变的映射器来共享,如果有人不小心更改了共享映射器,应该抛出一些异常。
有这样的吗?
【问题讨论】:
-
我将创建一个 ObjectMapper 的包装器并公开一些需要的功能
-
相反,我只是想隐藏一些功能以防止配置更改,这似乎很常见的用例,是否存在任何包装器?如果没有,我会为自己创建一个。
-
一种选择是共享
ObjectWriter实例而不是ObjectMapper。该类乍一看似乎是不可变的,尽管我认为这不是它的预期目的。 -
@Henrik 但是从 ObjectWriter 无法克隆 ObjectMapper。
-
@wener:你不应该这样做。创建一个正确配置的
ObjectMapper,然后将ObjectReader和ObjectWriter的实例提供给您担心有人可能会更改配置的代码部分。有关详细信息,请参阅此答案:stackoverflow.com/a/3909846/13075
标签: java json jackson jackson-databind