簡體   English   中英

使用 CDI + Weld 進行構造函數注入

[英]Constructor Injection with CDI + Weld

我想使用構造函數注入,因為它使我的單元測試更安全、更容易編寫:我不能忘記設置要注入的字段。 CDI 支持這一點,@ @Inject注釋的 javadoc 說:“@ @Inject對於公共的、無參數的構造函數是可選的,當沒有其他構造函數存在時。這使注入器能夠調用默認構造函數。”

我知道其他標准需要無參數構造函數(例如 JAX-RS;請參閱此問題),這是一個無賴。 但即使對於一個簡單的類,如:

public class Bar {
    private final Foo foo;

    public Bar(Foo foo) {
        this.foo = foo;
    }
}

焊接失敗,說: DeploymentException: WELD-001408: Unsatisfied dependencies for type Bar 當我添加@Inject注釋時,它起作用了。

我真的不希望 Weld 有任何錯誤,因為它已經建立了多年; 我可能搞錯了什么。 但也許它沒有引起人們的注意,只是因為 Jakarta EE 社區根本不進行任何構造函數注入。

這不是焊接錯誤。 正如規范所示,您的構造函數需要@javax.inject.Inject 唯一不需要它的時候是當您有一個零參數構造函數並且您不希望容器調用任何其他構造函數時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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