gpt4 book ai didi

Grails BootStrap 问题

转载 作者:可可西里 更新时间:2023-11-01 11:38:58 24 4
gpt4 key购买 nike

我有一个使用 Grails Redis 插件的应用程序。这个插件工作正常,在我的 Grails Artifacts 中提供了一个 redisService 就好了。我还有一个单例 CacheManager 类,它有一个静态实例变量,一个对 redisSevice 的引用。在 Boostrap.groovy 中:

class BootStrap {

def redisService

def init = { servletContext ->
CacheManager.instance.redisService = redisService
}
def destroy = {
}
}

class CacheManager {

def redisService

private static CacheManager manager = new CacheManager()

private CacheManager() {
}

public static CacheManager getInstance() {
manager
}
}

这在一段时间内工作正常,一段时间后,redisService 不知何故变为空。我使用这个缓存管理器作为redis之上的一层。我还没有找到能够将服务注入(inject)标准 POGO 的更好方法,所以这个可行。只是闲置了一段时间后似乎失败了。

有人知道为什么吗?或者更好的主意?

最佳答案

使用 HoldersCacheManager 中访问 redisService 似乎是一个更好的选择:

import grails.util.Holders

class CacheManager {

def redisService = Holders.applicationContext.getBean("redisService")

(...)

当你的 CacheManager 中的 redisService 变为 null 时?是在开发带有重载类的应用程序时吗?或者在“正常”运行的应用程序中?第一种情况可以很好地解释为什么它变为 null,否则我现在不知道......

关于Grails BootStrap 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26940110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com