Grails:良好使用.memoize()的例子?

时间:2012-03-16 00:24:27

标签: grails groovy memoization

记忆一个没有副作用且只进行查找的服务方法的语法是什么?备忘录是否会在会议期间持续存在,还是在网络世界中有点无用?是否有一些在grails应用程序中使用.memoize()的好地方的例子?

class DetermineStuffService{
  def figureThisOut(def whatever){
    //look up all sorts of stuff and do some heavy side-effect free processing
    return nastyHashmap
  }
}

所以在控制器中,我可以以某种方式调用DetermineStuffService.figureThisOut(someRandomObject)并利用.memoize()吗?

1 个答案:

答案 0 :(得分:1)

这有一个问题是memoize()仅适用于闭包。闭包是对象,因此如果您在服务中存储一个,它就是“状态”。

使用Spring Cache plugin更好地缓存grails中的服务。然后,要缓存服务方法的结果,只需使用@Cacheable注释该方法。它支持多个缓存,自动刷新和缓存控制器输出。