IDEA提示推進使用構造器注入


起源

最近使用IDEA寫代碼時候,IDEA總是會提示不推薦使用字段注入,然后今日看到一篇文章恰好講這個,故此記錄下。

我對閱讀的文章拿思維導圖做了個總結,內容如下:

注入方式

構造器注入

Before Spring 4.3, we had to add an annotation to the constructor. With newer versions, this is optional if the class has only one constructor.
Spring4.3版本以前必須手動在構造器上寫注解,之后版本如果只有一個構造器可以缺省。

#構造器注入
@Component
class Cake {
  private Flavor flavor;

  Cake(Flavor flavor) {
  //注入時可校驗
    Objects.requireNonNull(flavor);
    this.flavor = flavor;
  }

  Flavor getFlavor() {
    return flavor;
  }
  ...
}

setter注入

@Component
class Cookie {

  private Topping toppings;

  @Autowired
  void setTopping(Topping toppings) {
    this.toppings = toppings;
  }

  Topping getTopping() {
    return toppings;
  }
  ...
}

字段注入

//實際項目中用的最多,但是idea最近開始提示不推薦。
@Component
class IceCream {

  @Autowired
  private Topping toppings;

  Topping getToppings() {
    return toppings;
  }

  void setToppings(Topping toppings) {
    this.toppings = toppings;
  }
}

總結

實際項目開發中,我經常會遇到第二個問題。依靠字段注入,然后引入了很多屬性。如果這種方式切換到構造器注入,明顯參數過長,典型的代碼異味。所以我對文章作者提出的觀點是認同的。






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM