我正在维护一个使用Jersey创建RESTful API的应用程序。
我想在所有这些上设置响应标头以关闭缓存。
我可以通过强力替换每个
来做到这一点Response.ok().build()
与
Response.ok().cacheControl(noCache).build()
其中noCache
之前定义为
CacheControl noCache = new CacheControl();
noCache.setNoCache(true);
(并对我构建的所有其他Response对象进行了类似的更改)但是在所有100多个地方进行此更改时,返回值似乎都是火腿。有没有一种简单的方法来为我生成的所有响应设置首选项?
答案 0 :(得分:2)
除非泽西岛有神奇的设置,否则我能想到的一种方法是使用像AspectJ这样的AOP库。您捕获build()方法的调用,并在之前执行cacheControl。
但是,与进行日食搜索这种方法的所有调用者并用其他内容替换相比,这是否值得付出努力是值得怀疑的。
根据DRY(Do-not Repeat Yourself)原则,更好的编程风格是抽象&集中构建响应的方式,这样当您需要更改它时,您只需要在一个位置而不是多个位置进行更改。也许你可以在这里应用服务模式(例如:创建一个ResponseBuilderService)。
答案 1 :(得分:2)
处理此问题的正确位置将在Web容器中;你正在使用哪一个(Jetty / Tomcat / Grizzly /等)?