0

我有以下添加自定义对象映射器的方法。

<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 私有 ObjectMapper jsonMapper;

在我的一种行动方法中

@RequestMapping(produces = "application/json", method = RequestMethod.GET)
public
@ResponseBody
Response get(){
    jsonMapper.setFilters(new SimpleFilterProvider().addFilter(dynamic_per_request));
    return service.get();
}

我只是担心它不会是线程安全的。这是真的吗?如果是,我怎样才能使它线程安全?

4

1 回答 1

0

不,你不应该那样处理它。您正在动态更改配置,但很有可能在第一个请求实际使用过滤器之前,另一个请求会出现并将其更改为其他内容。

相反,您应该实现线程安全的 FilterProvider,它可以动态地解析您的过滤器,使用类似于ThreadLocal传递您需要传递的信息之类的东西。

于 2012-11-01T00:01:15.123 回答