2
私はcodingwell/scala-guice
を使用していて、他のコンポーネント/クラスのコンストラクタにDAOクラスを注入しようとしています。ScalaのGuice:DIコンストラクタ自体を持つクラスのモジュール
class DaoModule extends AbstractModule with ScalaModule {
override def configure() {
val dao1 = new FirstDaoImpl
bind(new TypeLiteral[FirstDaoTrait] {}).toInstance(dao1)
}
}
予想通り、それはコンストラクタ・インジェクションのために使用することができる結合作品:
は最初の試みで、私はそれが動作するかどうかを確認するために1 DAOクラスを使用していました。2番目の手順では、もう1つのDAOクラスをモジュールに追加します。しかし、そのDAOクラスは、最初のDAOによって異なります
class SecondDaoImpl @Inject()(firstDao: FirstDaoTrait) extends SecondDaoTrait
私は、既存のモジュールに必要な結合を追加するかどうかはわかりません。最初のステップを繰り返すこと、このことになる:
val dao2 = new SecondDaoImpl(???)
bind(new TypeLiteral[SecondDaoTrait] {}).toInstance(dao2)
しかし、もちろんこのクラスは唯一の最初のDAO(したがって、「???」)を提供することで、インスタンス化することができます。これどうやってするの?
おかげで、。だから、インジェクタを使用する代わりにコンストラクタの注入を使用していますか?私はコンストラクタの注入を変更していないので、それはまだ動作しているようです。 – fxlae
@JFoこれは、依存関係を解決する方法の1つで、最も簡単な方法です。 –