java - 使用 Spring 缓存 REST 服务
问题描述
我有一个返回 javax.ws.rs.core.Response 的 REST 服务。此响应实际上包含一个 StreamingOutput,它在循环中填充了我流式传输的对象,如下所示:
@Cacheable("params")
public Response RetrieveAreas(String params)
{
(...)
StreamingOutput adminAreaStream = new StreamingOutput()
{
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
@Override
public void write(OutputStream output) throws IOException, WebApplicationException
{
try
{
(the loops and object writing/flushing here)
}
(...)
}
return Response.ok(adminAreaStream).build();
}
这个SO question 处理基于 REST 的 Spring 缓存,但不处理 StreamingOutput 方面。我的问题是:
- 缓存在方法级别(RetrieveAreas)应用时是否正确放置 - 还是应该放置在对象被加载并写入流的循环内?
- 除了@Cacheable,还需要什么来为我的场景连接一个最小的、工作的 Spring 缓存?我看过本教程,但在很多方面都不清楚,例如缓存的命名、缓存管理器的需要、ConcurrentCacheManager 的字符串参数和缓存名称之间的关系(它们是否需要相同或是否只是巧合)等等。如果可能的话,请提供一个项目符号列表来说明要做什么(1.创建一个缓存管理器类,2.用@Cacheable标记一个方法等)
解决方案
推荐阅读
- vim - vim 用不同的文本位置更改多行的文本?
- django - 删除模板中的对象 - django
- unit-testing - 如何测试创建和注入依赖项的函数
- node.js - Koa 服务器的 Access-Control-Allow-Origin 问题
- django-admin - 如何在 admin.py 中按用户选择 list_filter?
- reactjs - 从无模式 JSON 生成动态表单
- java - 如何使用 java.awt 中的 Point 类找到二维数组的点
- react-native - 如何使用 onPress 将样式应用于某个 ListItem?
- python - 在无人机图像中识别汽车
- java - 为什么使用迭代器只读取文本文件的第一行