2017-01-26 7 views
0

ここに問題があります。私は2つの可変のモジュールを持っていると仮定しましょう:Scaldi:typesafe設定で定義されたバインディングを見つけることができませんでした

リソース/ application.conf:

どこか私はコード内の
db { url="postgres url" username="db_user" password="db_password" driver="cc" } 

implicit val inj = TypesafeConfigInjector() :: new AppModule 

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") 
    ) } 

、ここでは、対応するconfigです

ただし、このインジェクタでは次の例外があります。

caldi.InjectException: No binding found with following identifiers: 
* TypeTagIdentifier(String) * StringIdentifier(db.url) 

答えて

1

Scaldiの順序は重要です。結合は左から右に解決されます。

::演算子as stated in the docsは、オペランドを反転して2つのインジェクタを構成します。したがって、あなたのケースでは、AppModuleが最初に解決されるため、注入されたconfigパラメータを見つけることができません。

問題を解決するには、++オペレーターを使用してインジェクターを整理してください。

私はこれが役に立ちそうです。

関連する問題