前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringBoot实体类中的常用注解

SpringBoot实体类中的常用注解

原创
作者头像
Java学术趴
发布于 2022-06-26 13:19:51
发布于 2022-06-26 13:19:51
4.1K00
代码可运行
举报
文章被收录于专栏:Java全栈·Java全栈·
运行总次数:0
代码可运行

👨‍🎓作者:Java学术趴 🏦仓库:GithubGitee ✏️博客:CSDN掘金InfoQ云+社区 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。

☠️每日毒鸡汤:这个社会是存在不公平的,不要抱怨,因为没有用!人总是在反省中进步的!

👋大家好!我是你们的老朋友Java学术趴

2. SpringBoot实体类中的注解

2.1 lombok中的注解

2.1.1 @Getter/@Setter

@Getter/@Setter : 注解在类上, 为类提供读写属性。

2.1.2 @ToString

@ToString : 注解在类上, 为类提供 toString() 方法。

2.1.3 @EqualsAndHashCode

@EqualsAndHashCode : 注解在类上, 为类提供 equals() 和 hashCode() 方法。

在类是继承父类的情况下,EqualsAndHashCode实则就是在比较两个对象的属性;

  • @EqualsAndHashCode(callSuper = false) 时不会比较其继承的父类的属性可能会导致错误判断;
  • @EqualsAndHashCode(callSuper = true) 时会比较其继承的父类的属性;
2.1.4 @NoArgsConstructor

@NoArgsConstructor :注解在实体类上, 为类提供无参构造方法。

2.1.5 @RequiredArgsConstructor

@RequiredArgsConstructor :注解在实体类上,提供有指定参数的构造方法。

2.1.6 @AllArgsConstructor

@AllArgsConstructor : 注解在实体类上,提供全参构造方法。

2.1.7 @NonNull

@NonNull : 注解在参数上, 如果获取到的这个参数为 null , 就会报出异常, throw new NullPointException(参数名)。 注意 :这个注解是注释在实体类的属性上,而不是实体类上。

2.1.8 @Data

@Data :@Data相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集。写这一个注解就不用写其中包含的这5个注解了。

注意:使用@Date会生成一无参构造方法,如果想在加一个有参构造方法,需要添加 @AllArgsConstructor 注解。

2.1.9 @Builder

@Builder : 注解在实体类上, 为类提供一个内部的 Builder。

2.1.10 @Synchronized

@Synchronized : 注解在方法上, 为方法提供同步锁。 注意:这个是注解在方法上,而不是类上。

2.1.11 @Log4j

@Log4j : 注解在各个层,提供一个属性名为 log 的 log4j 的日志对象。之后就可以在任何地方直接使用log.info()打印日志。

以前使用打印日志,必须先创建一个打印日志的Logger对象,调用Logger对象中的info()方法进行打印。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private final Logger logger = LoggerFactory.getLogger(当前类名.class);
logger.info("方法被触发了");

加入了@Log4j注解之后,直接使用 log.info() 方法打印日志信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
log.info("方法被触发了");
2.1.12 @Slf4j

@Slf4j : 注解在各个层,提供一个属性名为 log 的 Slf4j 的日志对象。他的用法和上面的@Log4一样。

2.1.13 @Accessors

@Accessors : Accessor的中文含义是存取器。这个注解是针对实体类中的 getter与setter方法而言的。

包含的属性:

fluent属性:参数值为true/false

  • 默认为false,当设置为true时,表示生成的setter和getter方法没有前缀set和get,且setter方法返回的是当前对象。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Data
@Accessors(fluent = true)
public class Person {
    private int id;
    private String name;
    
    // 生成的getter和setter方法如下,方法体略
    // getter省略了get
    public int id() {}
    // setter省略了set,并且返回值是:Person对象
    public Person id(int id) {}
 
    public String name() {}
    public Person name(String name) {}
}
  • getter方法不是getId(){},而是id(){};
  • setter方法不是void setId(){},而是Person id(int id){}

chain属性:参数值为true/false

  • 默认为false (注:但是当fluent为true时,其默认为true) ,当为false的时候,生成的setter方法是void类型;如果设置为true生成的setter方法返回this(当前对象)。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Data
@Accessors(chain = true)
public class Person {
    private int id;
    private String name;
    
    // 生成的setter方法如下,方法体略
    public Person setId(int id) {}
    public Person setName(String name) {}
}

这样写的好处:

  • 以前实体类的setter()方法返回值是:void。当给实体类中的多个参数赋值的时候必须分开写,很麻烦。 Person.setName("张三"); Person.setAge(20);
  • 使用 @Accessors(chain = true) 之后,setter()方法的返回值是该实例对象,所以此时可以连续调用setter() Person.setName("张三").setAge(20);

prefix属性:参数为String类型

  • 可以指定前缀,生成getter和setter方法时会去掉指定的前缀(遵守驼峰命名)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Data
@Accessors(prefix = "zqr")
class Person {
    private int zqrId;
    private String zqrName;
 
    // 生成的getter和setter方法如下,方法体略
    public int getId() {}
    public void setId(int id) {}
 
    public String getName() {}
    public void setName(String name) {}
}

相当于字符串截取功能,在生成getter和setter方法的时候,会自动截取去除指定前缀,然后加上get与set;

如上代码,生成的不是getZqrId(),而是getId()。遵守驼峰命名规则。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Lombok 让代码“亚健康”?你真的用对了吗?
周末的时候,和朋友闲聊,说最近在加班,赶进度,搞项目重构;然后跟我在吐槽,团队不让用Lombok,还列了一堆的缺点说让代码变的"亚健康",本来进度就挺赶的,因为一些基础的代码,消磨着精力和时间,心挺累的...
一行Java
2022/04/07
6280
Lombok 让代码“亚健康”?你真的用对了吗?
SpringBoot(四)SpringBoot中lombok使用
lombok概述 lombok简介 Lombok想要解决了的是在我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写,以期方便使用的方法;在使用Lombok之后,将由其来自动帮你实现代码生成,注意,其是 在运行过程中,帮你自动生成的 。就是说,将极大减少你的代码总量。 lombok作用 消除模板代码 getter、setter、构造器、toString()、equals() 便捷的生成比较复杂的代码,例如一个
用户1195962
2018/03/28
1.3K0
SpringBoot(四)SpringBoot中lombok使用
Lombok常用注解
作用类上:生成所有成员变量的getter/setter方法 成员变量:生成该成员变量的getter/setter方法 案例:
ha_lydms
2023/08/10
2180
Lombok常用注解
二.SpringBoot配置lombok
Lombok想要解决了的是在我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写,以期方便使用的方法;在使用Lombok之后,将由其来自动帮你实现代码生成,注意,其是 在运行过程中,帮你自动生成的 。就是说,将极大减少你的代码总量。提高代码编写的效率。消除模板代码getter、setter、构造器、toString()、equals()便捷的生成比较复杂的代码,例如一个entity要转化成构建器模式的形式,只需要一个注解。
十分钟空间
2022/08/17
8780
二.SpringBoot配置lombok
MyBatis 从入门到精通:Java开发的新利器Lombok
在Java开发中,简洁高效的代码编写是开发者们一直追求的目标。而Lombok作为一个Java库,能够极大地简化Java代码的编写,提高开发效率。本文将深入探讨Lombok的使用方法、核心功能以及实践步骤,并探讨其在项目开发中的应用。
默 语
2024/11/20
1420
【SpringBoot-3】Lombok使用详解
Lombak是一款Java开发插件,它主要应用在Java模型对象类中。 Lomabk通过注解的方式,隐式(即代码中不可见,但编译后可见)实现Getter/Setter、构造器方法、字符串输出的ToString方法和Equals/HashCode方法等,大幅度精简冗长繁琐的代码。 Lombok针对这些内容的处理是在编译期,而不是通过反射机制,这样的好处是并不会降低系统的性能。
云深i不知处
2020/09/16
1.3K0
【小家Java】Lombok的使用详解(最详尽的解释,覆盖讲解所有可用注解),解决@Builder.Default默认值问题
Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的Java模型对象(POJO)。在开发环境中使用Lombok插件后,Java开发人员可以节省出重复构建,诸如hashCode和equals这样的方法以及各种业务对象模型的accessor和ToString等方法的大量时间。对于这些方法,它能够在编译源代码期间自动帮我们生成这些方法,并没有如反射那样降低程序的性能。
YourBatman
2019/09/03
3.3K0
【小家Java】Lombok的使用详解(最详尽的解释,覆盖讲解所有可用注解),解决@Builder.Default默认值问题
超级全面的SpringBoot注解介绍,每一个注解都深入骨髓!!
👨‍🎓作者:Java学术趴 🏦仓库:Github、Gitee ✏️博客:CSDN、掘金、InfoQ、云+社区 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。 ☠️每日毒鸡汤:放心,闭上眼,睡一觉,反正明天也不一定比今天好。 👋大家好!我是你们的老朋友Java学术趴。今天的文章是小编经过了长达两个星期的创作,毫不出牛逼的说,这篇文章完全可以作为一个字典查询。里面几乎包含了你目前你
Java学术趴
2022/07/26
6.1K0
超级全面的SpringBoot注解介绍,每一个注解都深入骨髓!!
Lombok有啥牛皮的?SpringBoot和IDEA官方都要支持它!
Lombok是一款Java代码功能增强库,在Github上已有9.8k+Star。它会自动集成到你的编辑器和构建工具中,从而使你的Java代码更加生动有趣。通过Lombok的注解,你可以不用再写getter、setter、equals等方法,Lombok将在编译时为你自动生成。
macrozheng
2021/01/06
9550
Lombok有啥牛皮的?SpringBoot和IDEA官方都要支持它!
lombook注解使用
两条user数据,ID完全不一样,结果明显是错的,没有做id的equals判断,修改为:
2021/11/18
3490
Lombok超详解及其注解
以前的Java项目中,充斥着太多不友好的代码:POJO的getter/setter/toString/构造方法;打印日志;I/O流的关闭操作等等,这些代码既没有技术含量,又影响着代码的美观,Lombok应运而生。LomBok可以通过注解,帮助开发人员消除JAVA中尤其是POJO类中的冗长代码。
会洗碗的CV工程师
2023/11/15
5750
Lombok超详解及其注解
使用 Lombok 提升编码效率
今天让我们探讨一下如何利用 Lombok 工具来提升 Java 开发中的效率。提到 Java,很多人的第一反应就是臃肿,这主要是因为在日常编程中,我们不得不编写许多重复的代码,例如对类的属性写的 Setter、Getter 方法,下面就是一个简单的例子:
写bug的高哈哈
2025/01/26
1270
使用 Lombok 提升编码效率
Spring Boot 集成 Lombok 让代码更简洁
1.菜单栏 File > Settings > Plugins > Browse repositories…
芋道源码
2019/03/08
8610
Spring Boot 集成 Lombok 让代码更简洁
芋道 Spring Boot 消除冗余代码 Lombok 入门
摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/Lombok/ 「芋道源码」欢迎转载,保留摘要,谢谢!
芋道源码
2020/04/01
1K0
超级全面的 Lombok 注解介绍,学一波!
blog.csdn.net/riemann_/article/details/105374987
全栈程序员站长
2021/06/29
5K0
推荐一款代码神器,代码量至少省一半!
在我们 Java 项目里面,有很多 Java Bean 需要为每个属性生成 get/ set 方法,增删改属性都需要维护这些 get/ set 方法甚是麻烦。
Java技术栈
2019/07/05
6290
Java神奇lombok创建实体
Lombok对于Java开发者来说应该是比较中意的,Lombok框架提供了很多编码遍历,但是也降低了代码的阅读力。下面我们看看在Idea开发工具中该怎么使用Lombok? 首先需要添加maven坐标 <!--lombok依赖--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.21</version> <scope>provide
JavaEdge
2018/04/28
1.5K0
Java神奇lombok创建实体
你有没有使用过这些编程骚操作(一)- Lombok(Part B)
@Cleanup注解可以生成对资源进行关闭的代码,无须手动通过try-catch-finally代码块判断并关闭所有的资源
RiemannHypothesis
2022/08/19
4370
你有没有使用过这些编程骚操作(一)- Lombok(Part B)
Java 之 Lombok 必知必会
在目前众多编程语言中,Java 语言的表现还是抢眼,不论是企业级服务端开发,还是 Andorid 客户端开发,都是作为开发语言的首选,甚至在大数据开发领域,Java 语言也能占有一席之地,如 Hadoop,Spark,Flink 大数据等。而作为已经诞生 24 年的 Java 相比其他语言来说,编写起来略显得冗长和复杂,而为了能极大提升 Java 开发的效率和代码简洁性,一个 Java 库 Lombok 就这样诞生了。
闻人的技术博客
2019/09/19
9170
Java 之 Lombok 必知必会
Lombok
定位到file/setings/plugins/markeptlace搜索Lombok
框架师
2021/03/08
6270
Lombok
推荐阅读
相关推荐
Lombok 让代码“亚健康”?你真的用对了吗?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验