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;
}
相关推荐
xieliyu.17 小时前
Java算法精讲:双指针(三)
java·开发语言·算法
明夜之约18 小时前
Spring Boot 自动装配源码
java·spring boot·后端
Leaton Lee18 小时前
Spring Boot分层架构详解:从Controller到Service再到Mapper的完整流程
java·spring boot·后端·架构
Micro麦可乐18 小时前
Spring Boot 实战:从零设计一个短链系统(含完整代码与数据库设计)
数据库·spring boot·后端·哈希算法·雪花算法·短链系统
Jinkxs18 小时前
Resilience4j- 与 Spring Boot 快速集成:自动配置与基础注解使用
java·spring boot·后端
辣机小司18 小时前
【踩坑记录:Spring Boot 配置文件读取值不一致?警惕 YAML 的“八进制陷阱”与 SnakeYAML 版本之谜】
java·spring boot·后端·yaml·踩坑记录
码农阿豪18 小时前
从零到一:Spring Boot快速接入金仓数据库实战
数据库·spring boot·后端
鼎讯信通18 小时前
风电光缆运维提质增效:G-4000A 光缆故障追踪仪破解风场巡检难题
运维·网络·数据库
三十..19 小时前
MySQL 从入门到高可用架构实战精要
运维·数据库·mysql
fangdengfu12319 小时前
ES分析系统各个服务日志占用量
java·前端·elasticsearch