当前位置: 首页 > news >正文

Lombok常用注解总结

@RequiredArgsConstructor注解

1.示例

在类上添加@RequiredArgsConstructor注解,Lombok会自动生成一个构造函数,该构造函数包含类中所有final字段和被@NonNull注解标注的字段。示例如下:

import lombok.NonNull;
import lombok.RequiredArgsConstructor;@RequiredArgsConstructor
public class User {private final Long id;@NonNullprivate String name;private Integer age; // 普通字段不会出现在构造函数中
}

上面的代码经过编译后,会生成如下构造函数:

public User(Long id, @NonNull String name) {if (name == null) {throw new NullPointerException("name is marked non-null but is null");}this.id = id;this.name = name;
}
2.用于Spring Bean的构造函数注入

@RequiredArgsConstructor常常和@Autowired一起使用,以此实现Spring Bean的构造函数注入。
示例:

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;@Service
@RequiredArgsConstructor
public class UserService {private final UserRepository userRepository; // final字段private final EmailService emailService;    // final字段
}

编译之后,会生成如下构造函数:

@Service
public class UserService {private final UserRepository userRepository;private final EmailService emailService;public UserService(UserRepository userRepository, EmailService emailService) {this.userRepository = userRepository;this.emailService = emailService;}
}

Spring 4.3 之后无需显式使用 @Autowired
在 Spring 4.3 及后续版本中,如果一个类只有唯一的构造函数,那么这个构造函数的 >@Autowired 注解是可以省略的。Spring 能够自动识别并完成依赖注入。例如:

@Service
@RequiredArgsConstructor // 生成唯一的构造函数
public class UserService {private final UserRepository userRepository;
}

上面的代码在编译之后会生成如下构造函数:

public UserService(UserRepository userRepository) {this.userRepository = userRepository;
}

此时,Spring 会自动注入 UserRepository,无需添加 @Autowired
存在多个构造函数时需要显式使用 @Autowired
当类中存在多个构造函数,并且你希望 Spring 使用特定的构造函数时,就需要显式添加 >@Autowired 注解。示例如下:

@Service
@RequiredArgsConstructor // 生成构造函数1
public class UserService {private final UserRepository userRepository;@Autowired // 显式指定使用这个构造函数public UserService(UserRepository userRepository, OtherService otherService) {this.userRepository = userRepository;// 其他逻辑}
}
注意事项
  1. final字段必须初始化:如果类中有final字段,那么这些字段必须在构造函数中进行初始化,否>则会出现编译错误。
  2. 避免与@AllArgsConstructor同时使用@RequiredArgsConstructor@AllArgsConstructor都用>于生成构造函数,同时使用可能会造成冲突。
  3. 静态字段被忽略:静态字段不会参与构造函数的生成。
  4. 参数顺序:构造函数中参数的顺序和类中字段的声明顺序是一致的。
http://www.lqws.cn/news/450541.html

相关文章:

  • 4.文件管理(文本、日志、Excel表)
  • 亚马逊云科技中国峰会
  • httpclient实现http连接池
  • 【Python小练习】3D散点图
  • 服务网格安全(Istio)从入门到实践
  • Kotlin 中ArrayList、listOf、arrayListOf 和 mutableListOf区别
  • 电力企业数字化——解读44页电力集团战略实施和集团对标一体化指标体系框架【附全文阅读】
  • Zephyr 系统深入解析:SoC 支持包结构与中断调度器调优实践
  • [设计模式]创建型模式-单例模式
  • Deepseek+墨刀,1min快速生成流程图!
  • iOS APP上架App Store实践:通过自动化流程和辅助工具高效提
  • 传输层协议UDP/TCP
  • Linux运维笔记:在 Ubuntu 工作站上安装 PyCharm 社区版并配置多用户访问
  • 悦数图数据库v5.1原生向量赋能
  • 【时时三省】(C语言基础)善于利用指针
  • 传感器:基于STM32F103/407系AHT20温湿度传感器数据采集
  • C#学习日记
  • STM32学习笔记:深入浅出解析CAN总线
  • 【生活点滴】车辆过户、新车挂牌
  • 基于物联网的智能衣柜系统设计
  • 变幻莫测:CoreData 中 Transformable 类型面面俱到(五)
  • 探秘阿里云云数据库Tair:性能、特性与应用全景解析
  • 基于大模型的三叉神经痛预测及治疗方案研究报告
  • [持续集成]
  • 腾讯云COS“私有桶”下,App如何安全获得音频调用流程
  • 效果成本双突破!快手提出端到端生成式推荐系统OneRec!
  • CSS知识补充 --- 控制继承
  • C++网络编程入门学习(五)-- CMake 学习笔记
  • 51单片机重要知识点1
  • git更改远端文件名称以及删除指定文件夹