Нет реализации для play.cache.SyncCacheApi, аннотированной @play.cache.NamedCache(value=options-cache)

Я использую play версии 2.6.2 с play-redis от karelcemus версии 2.0.1 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-cache. Любой ключ, какую конфигурацию мне не хватает?, Любое предложение приветствуется.

1 ответ

Кажется, что автор использовал @Named вместо @NamedCache, и он не записан ни в play-redis-samples, ни в readme.

Смотрите здесь: https://github.com/KarelCemus/play-redis/issues/138

Другие вопросы по тегам