- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个基于 Spring 的应用程序,并且我们为 Jackson ObjectMapper
类定义了一个单例 bean。
@Bean(name = "jacksonObjectMapper")
public ObjectMapper createObjectMapper() {
return new ObjectMapper();
}
我们有一个用例来编写通用 JSON 序列化器/反序列化器,我们按以下方式编写:
public <T, U> T deserialize(final String inputJsonString, final Class<T> targetType, final Class<U> targetParameterType) throws JsonProcessingException, IOException {
return objectMapper
.reader(objectMapper.getTypeFactory().constructParametricType(targetType, targetParameterType))
.without(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.readValue(inputJsonString);
}
这里我使用 ObjectReader
而不是 ObjectMapper
本身,并更改 ObjectReader
上的一些配置(例如 .without(... )
)。我的问题是,此类配置更改是否会影响可能使用相同 ObjectMapper
实例执行其他操作(可能只是反序列化或序列化)的其他线程?
有人可以帮助我了解详细信息并指导我吗?
如果我没有清楚地解释问题,我深表歉意;请告诉我,我可以提供更多详细信息。
最佳答案
简短回答:不,ObjectReader
配置不会更改底层 ObjectMapper
配置。
说明:如果直接使用ObjectMapper
并更改映射器的配置,并且映射器在多个线程之间共享,则可能会导致问题。但是,如果您不更改底层配置,那么您应该是安全的(更多阅读 here )。
在您的情况下,您正在调用实际创建 ObjectReader
的 mapper.reader(...)
方法。 ObjectReader
和 ObjectWriter
是不可变的,因此它们永远不会改变底层状态。此外,即使您更改底层ObjectMapper
的配置,阅读器也不会受到影响。
请注意,每次调用 mapper.reader(...)
方法时,您都会创建一个新的 ObjectReader
,因此如果您更改 ObjectMapper
在调用 reader
方法之间进行 code> 配置,您可能会遇到问题。
因此,总结一下:如果您创建一个 ObjectReader
并在线程中使用相同的读取器,那么您就是安全的。
关于java - Jackson ObjectMapper - 更改 ObjectReader 上的配置是否会影响多个线程对 ObjectMapper 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28579344/
我是一名优秀的程序员,十分优秀!