这是问题所在。假设我有两个可变模块:
class DbModule extends Module { bind[JdbcBackend#Database] toProvider
inject[JdbcDriver].backend.Database.forURL(
inject[String]("db.url"),
inject[String]("db.username"),
inject[String]("db.password"), null,
inject[String]("db.driver")
) }
这是相应的配置:
资源/ application.conf:
db { url="postgres url" username="db_user" password="db_password" driver="cc" }
我在代码中的某处:
implicit val inj = TypesafeConfigInjector() :: new AppModule
但是这个注射器给出了以下例外:
caldi.InjectException: No binding found with following identifiers:
* TypeTagIdentifier(String) * StringIdentifier(db.url)
答案 0 :(得分:1)
Scaldi的顺序很重要:绑定从左到右解决。
::
运算符as stated in the docs通过反转操作数组成两个注入器。因此,在您的情况下,首先解析AppModule
,因此无法找到注入的配置参数。
要解决您的问题,请使用++
运算符使喷油器保持正常运行。
我希望这有用。