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;
}
}
总结
实际项目开发中,我经常会遇到第二个问题。依靠字段注入,然后引入了很多属性。如果这种方式切换到构造器注入,明显参数过长,典型的代码异味。所以我对文章作者提出的观点是认同的。
网络知识搬运/梳理小工