Grails: примеры хорошего использования .memoize ()? - PullRequest
1 голос
/ 16 марта 2012

Какой будет синтаксис для запоминания сервисного метода, который не имеет побочных эффектов и предназначен только для поиска?Будет ли эта записка сохраняться от сессии к сессии или она будет несколько бесполезной в мире Интернета?Есть ли примеры хороших мест для использования .memoize () в приложении grails?

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 Ответ

1 голос
/ 16 марта 2012

Одна проблема с этим заключается в том, что memoize() работает только на замыканиях. Замыкания - это объекты, поэтому, если вы храните их в своем сервисе, это «состояние».

Лучший способ кэширования сервисов в Grails - с помощью плагина Spring Cache . Затем, чтобы кэшировать результат метода сервиса, просто аннотируйте метод с помощью @Cacheable. Он поддерживает несколько кешей, автоматическую очистку, а также кеширование вывода контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...