Akka Play测试中@NamedCache标注的缓存依赖注入该如何正确绑定?
问题根因
你当前绑定失败的核心原因是限定符注解类型不匹配:
- 业务类中注入用的是Play框架专属的
@play.cache.NamedCache("token-cache")注解 - 测试绑定时调用
qualifiedWith("token-cache")默认关联的是Guice自带的@com.google.inject.name.Named("token-cache")注解
两者属于完全不同的注解类型,Guice无法完成匹配,因此抛出配置异常。
修复方案
绑定时明确指定限定符为NamedCache注解实例即可,修正后的绑定代码如下:
// 首先确认导入Play的NamedCache注解 import play.cache.NamedCache private val cache: MockCaffeineCache = new CaffeineCacheApi(new NamedCaffeineCache("token-cache", new MockCaffeineCache)) val application: Injector = new GuiceInjectorBuilder() // 其他原有绑定保持不变 .bindings(bind[AsyncCacheApi].qualifiedWith(new NamedCache("token-cache")).to(cache)) // 其他配置保持不变
修改后Guice会将该绑定和业务类上的@NamedCache("token-cache")注解准确匹配,即可正常完成注入。
内容的提问来源于stack exchange,提问作者DenisNovac
相关产品推荐
相关产品推荐

