没有绑定使用 @play.cache.NamedCache(value=options-cache) 注释的 play.



我正在使用播放版本 2.6.2 和 karelcemus 版本 2.0.1 的 play-redis。https://github.com/KarelCemus/play-redis。根据文档,我已经禁用了播放的默认 EhCacheModule 并启用了play.api.cache.redis.RedisCacheModule并在 application.conf 中绑定命名缓存 下面是代码示例

play.cache.bindCaches = ["db-cache", "user-cache", "session-cache", "options-cache"]
play {
    modules {
        enabled += "play.api.cache.redis.RedisCacheModule"
        disabled += "play.api.cache.ehcache.EhCacheModule"
    }
}
play.cache.redis {
  bind-default = true
  instances {
    play {
      host:       localhost
      port:       6379
      prefix: default
    }
    options-cache{
      host:       localhost
      port:       6379
      prefix: options
    }
  }
}

对于我正在使用的缓存的实现play.cache.SyncCacheApi

import javax.inject.Inject;
import javax.inject.Singleton;
import play.cache.NamedCache;
import play.cache.SyncCacheApi;

@Singleton
public class GeneralOptions extends BaseOptions {
    @Inject
    public GeneralOptions(@NamedCache("options-cache") SyncCacheApi cache) {
        super(cache);
    }
}

在编译时,我在运行时没有收到错误,错误即将到来

No implementation for play.cache.SyncCacheApi annotated with @play.cache.NamedCache(value=options-cache) was bound.
  while locating play.cache.SyncCacheApi annotated with @play.cache.NamedCache(value=options-cache)
    for the 1st parameter of GeneralOptions.<init>(GeneralOptions.java:25)
  while locating GeneralOptions

因此,每个类都在抛出使用命名缓存的错误。任何线索我缺少什么配置? .任何建议不胜感激。

似乎作者使用了@Named而不是@NamedCache,而且既没有写在play-redis-samples中,也没有写在自述文件中。

看这里: https://github.com/KarelCemus/play-redis/issues/138

最新更新