[英]How model circular dependency in dagger2?
如何使用 dagger2 實現 model 循環依賴? 假設我們只有兩個類。 第一次注入是通過構造函數,第二次是通過方法,如下例所示:
class A{
private B b;
@Inject
public A(B b)
{
this.b = b;
}
}
class B{
private A a;
@Inject
public B() { }
@Inject
public void injectA(A a)
{
this.a = a;
}
}
您可以使用惰性注入:
class B{
private Lazy<A> a;
@Inject
public B(Lazy<A> a) {
this.a = a;
}
}
或者,您可以注入Provider<A>
,但請注意,每次調用Provider::get
時提供程序都會返回 A 的新實例(假設默認范圍),而Lazy::get
返回相同的實例。
將Provider<A>
或Provider<B>
注入其中之一,而不是直接注入 A 或 B。 然后,只要這兩個類在構造函數中都不需要另一個,它就可以工作。 如果他們在構造函數中都需要彼此,那么就沒有辦法做到這一點。
據我所知,你不能。
像這樣的依賴關系表明 A 和 B 可能比它們應該的更緊密。 要么合並它們,要么重構 C 中的公共部分
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.