json と xml の両方をサポートするために、コントローラーに 2 つのメソッドがあるとします。
@RequestMapping(value = "/get/response.json", method = RequestMethod.GET)
@Cacheable(JSON_CACHE)
public @ResponseBody JSONResponse getJsonResponse(){
return responseService.getJsonResponse();
}
@RequestMapping(value = "/get/response.xml", method = RequestMethod.GET)
@Cacheable(XML_CACHE)
public @ResponseBody XMLResponse getXmlResponse(){
return responseService.getXmlResponse();
}
そして、オブジェクトを適切な応答にマーシャリングする 2 つのメッセージ コンバーター。
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonConverter"/>
<ref bean="xmlConverter" />
</list>
</property>
</bean>
問題は、Spring 3.1 では、メソッドに の注釈が付けられていても@Cachable
、すべての呼び出しに対して依然としてマーシャラーを呼び出すことです。マーシャリングの前にオブジェクトの状態をキャッシュします。ここではパフォーマンスが重要であり、マーシャリングにはコストがかかりすぎるため、これは受け入れられません。そのような場合、Spring が最終的な応答をキャッシュすることを期待していました。ここで何か間違ったことをしていますか?