首頁 >Java >java教程 >為什麼我應該避免在 Spring 進行字段注入?

為什麼我應該避免在 Spring 進行字段注入?

DDD
DDD原創
2024-12-08 16:26:111030瀏覽

Why Should I Avoid Field Injection in Spring?

理解字段注入及其避免

字段注入,如下例所示,當在bean 的字段上直接注入@Autowired 時,就會出現字段注入:

@Component
public class MyComponent {
    @Autowired
    private Cart cart;
}

相反,建構函式註入(如下例所示)涉及透過建構子:

@Component
public class MyComponent {
    private final Cart cart;

    @Autowired
    public MyComponent(Cart cart){
       this.cart = cart;
    }
}

注入指引

一般情況下, Spring建議以下注入實務:

  • 使用建構函式註入進行強制依賴或不變性。
  • 使用 setter 注入來實現可選或可更改
  • 在大多數情況下避免字段注入。

字段注入的缺點

字段注入有幾個缺點:

  • 不變性:它阻止創建不可變物件。
  • 耦合:類別與 DI 容器緊密綁定,阻礙在其外部使用。
  • 實例化:字段注入需要一個DI容器來實例化,限制了它在單元中的使用測試。
  • 依賴關係模糊: 依賴關係保持隱藏,掩蓋了真正的依賴關係。
  • 過多的依賴關係計數: 欄位注入可以添加過多的依賴關係很容易,可能違反單一責任原理。

結論

依需求,主要使用建構子注入或建構子和setter注入的組合。現場注入的缺點超過了它的便利性,因此通常不建議使用。

以上是為什麼我應該避免在 Spring 進行字段注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn