Lombok 注解使用场景终极总结

我分成实体类Spring 业务类两种,清清楚楚、绝不混淆。

一、实体类

用注解:

复制代码
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Long id;
    private String nickName;
    private String phone;
}

作用:

  • @Data:生成 getter、setter、toString、equals、hashCode
  • @NoArgsConstructor:无参构造(MyBatis/JSON 必须要)
  • @AllArgsConstructor:全参构造(方便 new 对象)

特点:

  • 用于和数据库表对应的类
  • 数据需要读取、修改、传递
  • 不需要构造器注入
  • 字段不加 final(因为值会变)

二、Spring 业务类(@Service / @Controller / @Component 工具)

用注解:

复制代码
@RequiredArgsConstructor

Service 类示例

复制代码
@Service
@RequiredArgsConstructor
public class VoucherOrderServiceImpl extends ServiceImpl<...> {

    private final ISeckillVoucherService seckillVoucherService;
    private final RedisLock redisLock;
    private final RedisIdWorker redisIdWorker;

    // 方法...
}

工具类示例

复制代码
@Component
@RequiredArgsConstructor
public class RedisLock {

    private final StringRedisTemplate stringRedisTemplate;

    // 方法...
}

作用:

  • 只给 final 修饰的字段 自动生成构造器
  • Spring 自动完成构造器注入
  • 安全、规范、官方推荐

特点:

  • 用于服务、控制器、工具类
  • 注入的依赖永远不会改,所以加 final
  • 绝对不用 @Data(不需要 getter/setter)

三、快捷键直接生成构造器

1、先写好成员变量

复制代码
private final StringRedisTemplate stringRedisTemplate;

2、把光标放到这行下面,按快捷键:

Windows / LinuxAlt + Insert

3、弹出菜单选择:Constructor(构造器)

4、勾选 stringRedisTemplate → OK自动就出来了:

复制代码
public RedisLock(StringRedisTemplate stringRedisTemplate) {
    this.stringRedisTemplate = stringRedisTemplate;
}
相关推荐
Stella Blog3 小时前
狂神Java基础学习笔记Day03
java·笔记·学习
风子杨yxf7713 小时前
linux下oracle开机自启动以及关机自关闭数据库,并发送邮件通知
linux·运维·数据库·oracle·自启动·发邮件·自关闭
战族狼魂3 小时前
基于LibreOffice +python 实现一个小型销售管理系统的数据库原型教学实验
数据库·python
m0_640309303 小时前
PHP函数怎样适配高可靠性存储硬件_PHP在ZFS RAIDZ环境配置【技巧】
jvm·数据库·python
踏浪无痕3 小时前
用 AI 解决数据库性能问题的方法论
数据库
hnmpf3 小时前
linux系统离线环境安装mysql问题
linux·运维·mysql
2402_854808373 小时前
Django REST Framework 中实现用户资料更新的完整实践指南
jvm·数据库·python
m0_748839493 小时前
golang如何理解weak pointer弱引用_golang weak pointer弱引用总结
jvm·数据库·python
m0_738120723 小时前
渗透测试基础ctfshow——Web应用安全与防护(五)
前端·网络·数据库·windows·python·sql·安全