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;
  }
}

总结

实际项目开发中,我经常会遇到第二个问题。依靠字段注入,然后引入了很多属性。如果这种方式切换到构造器注入,明显参数过长,典型的代码异味。所以我对文章作者提出的观点是认同的。





posted @ 2020-04-03 22:03  aibilim  阅读(850)  评论(0编辑  收藏  举报