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;

私がしているアクションメソッドの1つに

@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 に答える