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;
}
相关推荐
事圆则缓15 小时前
Java I/O、文件与 Android 存储
java
wno70415 小时前
Spring Security基础使用
java·后端·spring
得物技术15 小时前
指标平台:从语义底座到智能消费的实践路径|得物技术
数据库·人工智能·ai编程
StarRocks_labs15 小时前
当大模型调用进入执行引擎:StarRocks AI Function 全新能力解析
数据库·starrocks·sql·ai·pipeline·数据处理·join
开心麻瓜15 小时前
一条 SQL 跑了 8 秒,优化到 200ms 的全过程
mysql
TDengine (老段)15 小时前
TDengine 常见问题 TOP4
数据库·物联网·时序数据库·tdengine·涛思数据·升级·tdengine 问题
小蒜学长16 小时前
基于RFID技术的仓储管理系统设计(代码+数据库+LW)
java·数据库·spring boot·后端·rfid技术·仓储管理
梦影_16 小时前
Langchain简单快速上手教程(五)——聊天模型之流式传输
java·数据库·人工智能·python·langchain
数据狐(Datafox)16 小时前
1688商品列表API接口解析(附 JSON 样例)
java·开发语言·数据库·爬虫·json
xcl092516 小时前
健身场馆无人自动化系统:从架构设计到落地实践
java·spring boot