如何在每个请求的基础上使用/不使用缓存?

时间:2012-04-08 19:12:12

标签: java spring hibernate spring-mvc ehcache

我有一个Hibernate + Ehcache + Spring MVC webapp,它以非常标准的方式设置:

控制器 - >服务类 - > DAO类 - > DB

该应用程序是一个REST API,它使用XML响应HTTP GET请求。一切都按预期工作。数据库仅在需要时才会被命中 - 否则结果来自Ehcache。

我想要的是在每个请求的基础上使用/不使用缓存。我当然希望默认行为是使用缓存,但是当" nocache = 1"参数传入,不应使用缓存,而应该读取数据库。

我开始添加" useCache"参数到我的服务类方法,然后到DAO类,但感觉不对。有没有更好/更好的方法来做到这一点?也许使用某种servlet过滤器?

1 个答案:

答案 0 :(得分:0)

这是一个想法,但我不确定它是否合适。

编写2个方法,一个用query.setCacheable(true);,另一个用普通方法。现在,当您可以根据需要使用这些方法时,即需要缓存时和不需要缓存时。

以下是article,其中提到了查询缓存。