[Dependency-Injection] CDI注入ループ



Answers

私は、明示的にjavax.inject.Providerを使用して問題を解決しました。 私はこれが自動的にWELDのフードの下で行われるべきであると思うが、これは私にとっても当てはまらない。 これは私のために働いて、私の関連する問題を解決しました。

class A {
    @Inject
    Provider<B> b; // access with b.get()
}

class B {
    @Inject
    Provider<A> a; // access with a.get()
}

私はそれをテストしていませんが、1つのプロバイダを使用してサイクルを中断するだけで十分です。つまり、両方のクラスで使用する必要はありません。

Question

私は、JBoss 7.1.1のWeldコンテナへのCDIインジェクションの問題にぶつかっています

私は次のオブジェクトモデルを持っています:

@Stateless
class ServiceEjb {
@Inject
A a;
}

class A {
@Inject
B b;
}

class B {
@Inject
A a;
}

ステートレスクラスにAまたはBを注入しようとすると、注入ループが発生し、javax.enterprise.inject.CreationExceptionでクラッシュします。

私は多くのことをしようとします(スコープ、AまたはBの@Singleton、しかし成功なし)。 私はコードを壊したくないので、それらの注射は感覚を作ります。

すべての手がかりは非常に高く評価されます。






Links