我有以下添加自定义对象映射器的方法。
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.CMSMappingJacksonHttpMessageConverter">
<property name="objectMapper" ref="jsonMapper"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
然后在控制器中我正在使用
@Autowired private ObjectMapper jsonMapper;
我采用的一种行动方法
@RequestMapping(produces = "application/json", method = RequestMethod.GET)
public
@ResponseBody
Response get(){
jsonMapper.setFilters(new SimpleFilterProvider().addFilter(dynamic_per_request));
return service.get();
}
我只是担心它不会是线程安全的。这是真的吗?如果是,我怎样才能使其线程安全?
答案 0 :(得分:0)
不,你不应该这样处理。您正在动态更改配置,但在第一个请求实际使用过滤器之前,很可能会发出另一个请求并将其更改为其他请求。
相反,您应该实现线程安全的FilterProvider,它可以动态地解析您的过滤器,使用类似ThreadLocal
的内容来传递您需要传递的信息。