Grails 2.5.0 - 在内存中缓存java对象

时间:2015-06-25 00:44:42

标签: grails caching

在bootstrap中,我想:

  1. 从数据库加载对象列表
  2. 从对象列表中提取信息
  3. 操纵提取的信息,从提取的信息中创建新列表
  4. 缓存新列表
  5. 在bootstrap从控制器或服务运行完毕后,随时访问新列表
  6. 是否有插件可以帮助我这样做?

2 个答案:

答案 0 :(得分:3)

它看起来不像缓存(即临时值,短暂,可能在任何时刻丢失),它是预先计算的值。不要认为缓存插件会有所帮助。

基本上你需要一个地方来保持这个价值。它可以是任何实际的,例如来自基本POJO类的static变量。但是,如果我们正在谈论Grails,我建议制作一个特殊的服务,它将存储价值,有一个获取它的方法,并且可能是一个进行初始计算的方法。服务是一个单独的,在不同的工件之间共享,将来很容易扩展新的逻辑,重构并支持这些代码。与缓存中的某些神奇价值相比,更容易理解/记住。

像:

class SuperValueService {
    def value

    void refresh() {
        value = ...
    }

}

Init in bootstrap:

class Bootstrap {
    def superValueService

    def init { ->
        superValueService.refresh()
    }
} 

并从控制器使用:

class MyController {
    def superValueService

    def action() {
        render models: [superValue: superValueService.value]
    }
}

答案 1 :(得分:0)

我正在使用compile 'com.google.guava:guava:18.0-rc2' see wiki,这也提供了自动驱逐。