我们都知道三种Bean注入的方式分别是属性注入,setter方法注入,构造器注入。这三种Bean注入的方式各有优缺点,但是相对来说更推荐使用构造器注入的方式。
1、构造器注入的优缺点
优点:
1、可以注入不可变对象
因为构造方法注入是在构造方法中进行的,而且final修饰的变量在构造方法中可以被赋值,所以说,构造方法注入的方式是可以解决不可变对象依赖注入的问题。
2、对象不可被修改
构造方法注入不会像 Setter 注入那样,构造方法在对象创建时只会执行一次,因此它不存在注入对象被随时(调用)修改的情况。
3、通用性好
构造方法和属性注入不同,构造方法注入可适用于任何环境,无论是 IoC 框架还是非 IoC 框架,构造方法注入的代码都是通用的,所以它的通用性更好。
缺点:
比较麻烦,没有属性注入来的直接简洁。
2、更简洁安全的注入方式
有一种方式融合了两个注入方式的优点:融合了安全性+便捷性。
以前我都是使用的@Resource去注入bean,但是由于JDK17之后@Resource的包位置发生了变化,如果在某些特定时候,可能会导致我们需要一个个的类进行修改import的路径。
所以我推荐使用这种注入的方式:
@RequiredArgsConstructor + private final BeanType beanName;
@RequiredArgsConstructor注解是Lombok中带的注解,使用该注解加上:
private final BeanType beanName;
就可以由构造器注入的方式注入Bean。而且很简洁直接。如下所示: