簡體   English   中英

dagger2中的model如何循環依賴?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM