@RequiredArgsConstructor
时间: 2023-10-20 13:35:19 浏览: 48
@RequiredArgsConstructor是Lombok的一个注解,用于简化对@Autowired的使用。通常情况下,在编写Controller层或Service层时,我们需要注入多个mapper接口或service接口。如果每个接口都写上@Autowired注解,会显得很繁琐。而使用@RequiredArgsConstructor注解可以代替@Autowired注解,实现自动注入。
使用@RequiredArgsConstructor注解需要导入Lombok依赖,并将注解写在类上方。需要注意的是,声明的变量必须加上final修饰符。通过调用类的构造方法,容器可以将依赖注入给这些变量。
与@AllArgsConstructor注解相比,@RequiredArgsConstructor注解只生成包含final字段或non-null字段的构造方法。如果使用@Value注解,@AllArgsConstructor注解的注入会失败,因为@Value注解是通过对象的set方法赋值的,而构造方法的执行在set方法之前,导致变量为null。而@RequiredArgsConstructor注解可以成功注入。
总结来说,@RequiredArgsConstructor注解可以替代@Autowired注解的写法,但需要注意变量必须使用final修饰。与@AllArgsConstructor注解相比,@RequiredArgsConstructor注解只生成包含final字段或non-null字段的构造方法,并且可以成功注入@Value注解的变量。
注解的使用方法可以作用在类上和属性上。当作用在类上时,可以使用@ToString、@EqualsAndHashCode、所有属性的@Getter、所有non-final属性的@Setter和@RequiredArgsConstructor的组合,通常情况下,这些注解已经足够使用了。
当类中没有final和@NonNull注解的成员变量时,@RequiredArgsConstructor会生成一个无参构造方法。这也是一些人误认为@Data注解会生成无参构造方法的原因。<span class="em">1</span><span class="em">2</span><span class="em">3</span>