一、什么是@RequiredArgsConstructor?
@RequiredArgsConstructor是Lombok的一个注解,简化了我们对@Autowired书写,我们在写Controller层或者Service层的时候,总是需要注入很多mapper接口或者service接口,如果每个接口都写上@Autowired,这样看起来就会很繁琐,@RequiredArgsConstructor注解可以代替@Autowired注解
二、@RequiredArgsConstructor怎么使用?
导包
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
使用
将@RequiredArgsConstructor写在类上面
注意点
1、声明的变量必须加上final修饰
2、基于构造方法为属性赋值,容器通过调用类的构造方法将其进行依赖注入
三、@AllArgsConstructor和@RequiredArgsConstructor区别
- @AllArgsConstructor 生成一个包含所有字段的构造方法,如果使用了@Value注入,@Value注入会失效,原因时因为@Value注解是通过对象的set方法赋值的,构造方法的执行还在set方法之前,所以在构造方法中使用变量会变量为null。
- @RequiredArgsConstructor会将类的每一个final字段或者non-null字段生成一个构造方法
- 总结:@AllArgsConstructor和@RequiredArgsConstructor都可以用来替代@Autowired写法,区别在于@RequiredArgsConstructor必须要有final修饰,如果有@Value注解,@RequiredArgsConstructor修饰可以成功注入,@AllArgsConstructor修饰会注入失败