Java中@RequiredArgsConstructor使用详解

 更新时间:2025年05月17日 14:27:31   作者:Jin-进  
这篇文章主要介绍了Java中@RequiredArgsConstructor使用的相关资料,@RequiredArgsConstructor是Lombok库提供的一个注解,用于自动生成一个包含所有final字段和非空字段的构造函数,需要的朋友可以参考下

一、什么是@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写在类上面

注意点

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

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

三、@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)需要no-args构造函数。此注释主要与@Data生成注释的其他构造函数之一或其中一个结合使用。

2、@RequiredArgsConstructor

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

3、@AllArgsConstructor

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

4、总结

	这些注释中的每一个都允许使用替代形式,其中生成的构造函数始终是私有的,并且生成包围私有构造函数的附加静态工厂方法。通过提供staticName注释的值来启用此模式,如下所示:@RequiredArgsConstructor(staticName="of")。与普通构造函数不同,这种静态工厂方法将推断泛型。这意味着您的API用户可以写入MapEntry.of("foo", 5)而不是更长时间new MapEntry<String, Integer>("foo", 5)。

	要在生成的构造函数上添加注释,可以使用onConstructor=@__({@AnnotationsHere}),但要小心; 这是一个实验性功能。有关更多详细信息,请参阅有关onX功能的文档。

	这些注释会跳过静态字段。

	与大多数其他lombok注释不同,显式构造函数的存在不会阻止这些注释生成自己的构造函数。这意味着您可以编写自己的专用构造函数,并让lombok生成样板文件。如果出现冲突(您的一个构造函数最终使用与lombok生成的签名相同的签名),则会发生编译器错误。

总结

到此这篇关于Java中@RequiredArgsConstructor使用详解的文章就介绍到这了,更多相关@RequiredArgsConstructor详解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java中的三种取整函数总结

    java中的三种取整函数总结

    下面小编就为大家带来一篇java中的三种取整函数总结。希望对大家有所帮助。一起跟随小编过来看看吧,祝大家游戏愉快哦
    2016-11-11
  • SpringBoot整合jasypt实现数据加密的步骤

    SpringBoot整合jasypt实现数据加密的步骤

    听说过jasypt吗?它可是一个超级流行的Java库哦,提供了简单又高效的加密和解密接口,整合jasypt后,我们的SpringBoot应用就能轻松处理敏感数据的加密和解密,而不必为复杂的加密算法头疼啦,下面给大家介绍SpringBoot整合jasypt实现数据加密的步骤,感兴趣的朋友一起看看吧
    2025-04-04
  • spring framework体系结构及模块jar依赖关系详解

    spring framework体系结构及模块jar依赖关系详解

    在本篇文章里小编给大家整理的是关于spring framework体系结构及模块jar依赖关系,对此有兴趣的朋友们可以学习下。
    2019-09-09
  • Springboot项目打包如何将依赖的jar包输出到指定目录

    Springboot项目打包如何将依赖的jar包输出到指定目录

    公司要对springboot项目依赖的jar包进行升级,但是遇到一个问题,项目打包之后,没办法看到他里面依赖的jar包,版本到底是不是升上去了,没办法看到,下面通过本文给大家分享Springboot项目打包如何将依赖的jar包输出到指定目录,感兴趣的朋友一起看看吧
    2024-05-05
  • MyBatis插入数据返回主键的介绍

    MyBatis插入数据返回主键的介绍

    今天小编就为大家分享一篇关于MyBatis插入数据返回主键的介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Java实现调用外部程序的示例代码

    Java实现调用外部程序的示例代码

    本文主要介绍了Java实现调用外部程序的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 如何在Spring data中使用r2dbc详解

    如何在Spring data中使用r2dbc详解

    这篇文章主要给大家介绍了关于如何在Spring data中使用r2dbc的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Java中Controller、Service、Dao/Mapper层的区别与用法

    Java中Controller、Service、Dao/Mapper层的区别与用法

    在Java开发中,通常会采用三层架构(或称MVC架构)来划分程序的职责和功能,分别是Controller层、Service层、Dao/Mapper层,本文将详细给大家介绍了三层的区别和用法,需要的朋友可以参考下
    2023-05-05
  • 如何利用Ganymed SSH-2模拟SSH操作

    如何利用Ganymed SSH-2模拟SSH操作

    这几天看SFTP资料时,无意中看到了Ganymed SSH-2,写了个简单demo,通过,感觉挺好用的,下面就和大家分享下。需要的朋友可以过来参考参考
    2013-08-08
  • Java中ArrayList集合的常用方法大全

    Java中ArrayList集合的常用方法大全

    这篇文章主要给大家介绍了关于Java中ArrayList集合的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论