开发者

Java中@RequiredArgsConstructor使用详解

目录
  • 一、什么是@RequiredArgsConstructor?
  • 二、@RequiredArgsConstructor怎么使用?
    • 2.1、导包
    • 2.2、使用
    • 注意点
  • 三、@AllArgsConstructor和@RequiredArgsConstructor区别
    • 四、@NoArgsConstructor、@RequiredArgsConstructor和@AllArgsConstrjavascriptuctor
      • 1、@NoArgsConstructor
      • 2、@RequiredArgsConstructor
      • 3、@AllArgsConstructor
      • 4、总结
    • 总结

      一、什么是@RequiredArgsConstructor?

      @RequiredArgsConstructor是Lombok的一个注解,简化了我们对@Autowired书写,我们在写Controller层或者Service层的时候,总是需要注入很多mapper接口或者service接口,如果每个接口都写上@Autowired,这样看起来就会编程客栈很繁琐,@RequiredArgsConstructor注解可以代替@Autowired注解

      二、@RequiredArgsConstructor怎么使用?

      2.1、导包

      <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <version>1.18.22</version>
      </dependency>
      

      2.2、使用

      将@RequiredArgsConstructor写在类上面

      Java中@RequiredArgsConstructor使用详解

      注意点

      1、声明的变量必须加上final修饰

      2、基于构造方法为属性赋值,容器通过调用类的构造方法将http://www.devze.com其进行依赖注入

      三、@AllArgsConstructor和@RequiredArgsConstructor区别

      1、@AllArgsConstructor 生成一个包含所有字段的构造方法,如果使用了@Value注入,@Value注入会失效,原因是因为@Value注解是通过对象的set方法赋值的,构造方法的执行还在set方法之前,所以在构造方法中使用变量会变量为null。
      2、@RequiredArgsConstructor会将类的每一个final字段或者non-null字段生成一个构造方法
      总结:
      	@AllArgsConstructor和@RequiredArgsConstructor都可以用来替代@Autowired写法,区别在于@RequiredArgsConstructor必须要有final修饰,如果有@Value注解,@RequiredArgsConstructor修饰可以成功注入,@AllArgsConstructor修饰会注入失败
      

      四、@NoArgsConstructor、@RequiredArgsConstructor和@AllArgsConstructor

      1、@NoArgsConstructor

      @NoArgsConstructor将生成一个没有参数的构造函数。如果这是不可能的(因为最终字段),将导致编译器错误,除非@NoArgsConstructor(force = true)使用,然后使用0/ false/ 初始化所有最终字段null。对于具有约束的字段(如@NonNull字段),不会生成任何检查,因此请注意,在稍后正确初始化这些字段之前,通常不会满足这些约束。某些Java构造(例如hibernate和Service Provider Interface)需要npythono-args构造函数。此注释主要与@Data生成注释的其他构造函数之一或其中一个结合使用。

      2、@RequiredArgsConstructor

      @RequiredArgsConstructor为每个需要特殊处理的字段生成一个带有1个参数的构造函数。所有未初始化的final字段都会获得一个参数,以及标记为@NonNull在声明它们的位置未初始化的任何字段。对于标记有的字段@NonNull,还会生成显式空检查。构造函数将抛出一个NullPointerExceptionif用于标记为@NonNullcontains 的字段的任何参数null。参数的顺序与字段在类中的显示顺序相匹配。
      

      3、@AllArgsConstructor

      @AllArgsConstructor为类中的每个字段生成一个带有1个参数的构造函数。标记为@NonNull结果的字段将检查这些参数。
      

      4、总结

      	这些注释中的每一个都允许使用替代形式,其中生成的构造函数始终是私有的,并且生成包围私有构造函数的附加静态工厂方法。通过提供staticName注释的值ebHReueMh来启用此模式,如下所示:@RequiredArgsConstructor(staticName="of")。与普通构造函数不同,这种静态工厂方法将推断泛型。这意味着您的API用户可以写入MapEntry.of("foo", 5)而不是更长时间new MapEntry<String, Integer>("foo", 5)。
      
      	要在生成的构造函数上添加注释,可以使用onConstructor=@__({@AnnotationsHere}),但要小心; 这是一个实验性功能。有关更多详细信息,请参阅有关onX功能的文档。
      
      	这些注释会跳过静态字段。
      
      	与大多数其他lombok注释不同,显式构造函数的存在不会阻止这些注释生成自己的构造函数。这意味着您可以编写自己的专用构造函数,并让lombok生成样板文件。如果出现冲突(您的一个构造函数最终使用与lombok生成的签名相同的签名),则会发生编译器错误。
      

      总结

      到此这篇关于Java中@RequiredArgsConstructor使用详解的文章就介绍到这了,更多相关@RequiredArgsConstructor详解内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新开发

      开发排行榜