假设我的控制器中有两种方法可以同时支持 json 和 xml。
@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();
}
还有两个消息转换器,将我的对象编组为合适的响应。
<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
,仍然为每个调用调用 marshaller。它在编组之前缓存对象的状态。这是不可接受的,因为性能在这里至关重要,而且编组对我来说太昂贵了。我希望 Spring 在这种情况下缓存最终响应。我在这里做错了吗?