Grails2.5.0-在内存中缓存java对象

Grails2.5.0-在内存中缓存java对象,grails,caching,Grails,Caching,在bootstrap中,我想: 从数据库加载对象列表 从对象列表中提取信息 操纵提取的信息,从提取的信息创建新列表 缓存新列表 在引导程序从控制器或服务完成运行后的任何时候访问新列表 有没有插件可以帮我做到这一点?它看起来不像缓存(即临时值、短暂值,随时可能丢失),而是预先计算的值。不要认为缓存插件会有帮助 基本上你需要一个地方来保持这个值。它实际上可以是任何东西,例如来自基本POJO类的静态变量。但如果我们讨论的是Grails,我建议做一个特殊的服务,它将存储值,有一个获取值的方法,可能还有一

在bootstrap中,我想:

  • 从数据库加载对象列表
  • 从对象列表中提取信息
  • 操纵提取的信息,从提取的信息创建新列表
  • 缓存新列表
  • 在引导程序从控制器或服务完成运行后的任何时候访问新列表

  • 有没有插件可以帮我做到这一点?

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

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

    比如:

    引导中的初始化:

    class Bootstrap {
        def superValueService
    
        def init { ->
            superValueService.refresh()
        }
    } 
    
    并从控制器中使用:

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

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

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

    比如:

    引导中的初始化:

    class Bootstrap {
        def superValueService
    
        def init { ->
            superValueService.refresh()
        }
    } 
    
    并从控制器中使用:

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

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

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

    比如:

    引导中的初始化:

    class Bootstrap {
        def superValueService
    
        def init { ->
            superValueService.refresh()
        }
    } 
    
    并从控制器中使用:

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

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

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

    比如:

    引导中的初始化:

    class Bootstrap {
        def superValueService
    
        def init { ->
            superValueService.refresh()
        }
    } 
    
    并从控制器中使用:

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

    我正在使用
    编译'com.google.guava:guava:18.0-rc2'
    ,它也提供自动逐出功能。

    我正在使用
    编译'com.google.guava:guava:18.0-rc2'
    ,它也提供自动逐出功能。

    我正在使用
    编译'com.google.guava:guava:18.0-rc2'
    ,它还提供自动逐出功能。

    我正在使用
    编译'com.google.guava:guava:18.0-rc2'
    ,它还提供自动逐出功能。

    是的,缓存插件:从文档甚至源代码中尽可能地阅读有关它的内容,看看如何做需要做的事情。是的,缓存插件:从文档甚至源代码中阅读所有关于它的信息,看看你如何做你需要做的事情。是的,缓存插件:从文档甚至源代码中阅读所有关于它的信息,看看你如何做你需要做的事。是的,缓存插件:阅读文档甚至源代码中关于它的所有内容,看看如何做需要做的事情。