Mapper 实例是完全线程安全的,不需要创建一个单独使用的映射器,但是可以更改映射器的配置。
尽管 ObjectMapper 具有复制功能,可以根据现有映射器复制配置以进行自定义,但如果我共享一个映射器,则不能保证当有人想要自定义映射器时,他们会复制共享的映射器。所以我想要一个不可变的映射器来共享,如果有人不小心更改了共享映射器,应该抛出一些异常。
有这样的吗?
Mapper 实例是完全线程安全的,不需要创建一个单独使用的映射器,但是可以更改映射器的配置。
尽管 ObjectMapper 具有复制功能,可以根据现有映射器复制配置以进行自定义,但如果我共享一个映射器,则不能保证当有人想要自定义映射器时,他们会复制共享的映射器。所以我想要一个不可变的映射器来共享,如果有人不小心更改了共享映射器,应该抛出一些异常。
有这样的吗?
一种方法是不共享实例,ObjectMapper
而是正确配置它,然后共享.ObjectWriter
ObjectReader
ObjectMapper
ObjectMapper om = new ObjectMapper();
// Configure to your needs
om.enable(...);
om.disable(...);
// Distribute these to the parts of the program where you fear configuration changes.
ObjectWriter writer = om.writer();
ObjectReader reader = om.reader();
这似乎也是 Jackson 开发者青睐的方法:https ://stackoverflow.com/a/3909846/13075