0

我正在维护一个使用 Jersey 创建 RESTful API 的应用程序。

我想在所有这些上设置响应标头以关闭缓存。

我可以通过蛮力替换每个

Response.ok().build()

Response.ok().cacheControl(noCache).build()

noCache前面定义为

CacheControl noCache = new CacheControl();
noCache.setNoCache(true);

(并对我构建的所有其他 Response 对象进行类似的更改)但是在所有 100 多个有返回值的地方进行此更改似乎是笨拙的。有没有一种简单的方法可以为我产生的所有响应设置首选项?

4

2 回答 2

2

除非泽西岛有魔法设置可以做到这一点,否则我能想到的一种方法是使用 AOP 库,如 AspectJ。您捕获 build() 方法的调用,并在之前执行 cacheControl。

但是,与进行 eclipse '搜索此方法的所有调用者并替换为其他内容'相比,这是否值得付出努力是值得怀疑的。

根据 DRY(不要重复自己)原则,一种更好的编程风格是抽象和集中构建响应的方式,这样当您需要更改它时,您只需在一个位置进行更改,而不是多个位置。也许您可以在这里应用服务模式(例如:创建一个 ResponseBuilderService)。

于 2012-12-19T23:30:03.837 回答
2

处理这个问题的正确位置是在 web 容器中;您使用的是哪一个(Jetty/Tomcat/Grizzly/等)?

于 2012-12-20T16:17:02.193 回答