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 / Linux :Alt + Insert

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

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

复制代码
public RedisLock(StringRedisTemplate stringRedisTemplate) {
    this.stringRedisTemplate = stringRedisTemplate;
}
相关推荐
Sarvartha6 小时前
final 关键字
java·开发语言
2601_952047797 小时前
单一策略深度教程:用轻易云把集成任务的报错实时推送到钉钉机器人
java·机器人·钉钉
数据狐(Datafox)7 小时前
淘宝图片搜索 API 落地实战:基于以图搜货搭建跨境电商选品系统
java·大数据·微服务
倔强的石头_8 小时前
聊聊金仓KFS:一款把数据同步软件做扎实的产品
数据库
闲云野鹤在人间9 小时前
MySQL|从理论、安装、备份到主从复制、MHA高可用详解
linux·运维·数据库·mysql·云计算
禾小西9 小时前
Redis:从两大维度和三大主线建立知识体系
数据库·redis·缓存
Escalating_xu9 小时前
【C 语言】数据在内存中的存储:补码、大小端、整型陷阱与 IEEE 754 全解析
java·c语言·网络
灯澜忆梦9 小时前
【面向对象编程C++】| 基础语法
java·c++·算法