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

Grails:良好使用.memoize()的示例?,grails,groovy,memoization,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 retu

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

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

因此,在控制器中,我可以调用
deterministuffservice.figureThisOut(someRandomObject)
并利用
.memoize()

其中的一个问题是
memoize()
只对闭包有效。闭包是对象,所以如果在服务中存储闭包,它就是“状态”


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

其中一个问题是
memoize()
仅对闭包有效。闭包是对象,所以如果在服务中存储闭包,它就是“状态”


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

我接受这个答案。需要明确的是:我们同意.memoize()在普通web应用程序中没有意义,因为它违背了无状态的原则,对吗?好吧,缓存从定义上讲是有状态的。然而,spring缓存的方式比
memoize()
更适合grails/spring,因为它将状态保持在一个地方,正确处理集群,并且不需要使用闭包而不是方法。我将接受这个答案。需要明确的是:我们同意.memoize()在普通web应用程序中没有意义,因为它违背了无状态的原则,对吗?好吧,缓存从定义上讲是有状态的。但是,spring缓存的方式比
memoize()
更适合grails/spring,因为它将状态保持在一个位置,正确处理集群,并且不需要使用闭包而不是方法。