Lombok
Contents
目录 start
目录 end|2020-04-27 23:42|
Lombok
何为Lombok
为什么要用
简化 JavaBean 省去了 Setter Getter toString hashCode 等方法,提供 生成构造器 Builder Log 等功能
为什么不要用
破坏了阅读代码的完整性, 当使用了构造器这样的注解, 如果想通过看构造器的引用方来找到调用方, 这时候是没有办法的 只能通过查看类的所有引用方再一个个找
常见IDE都没有原生支持, 必须要安装对应的插件才能正常编译运行项目
个人见解
Lombok在IDE中安装插件是为了编译和构建中能够动态的添加Getter Setter 等方法 而在Maven或者Gradle中添加是为了引入注解的包
取决于团队风格,用不用都不是大问题Java14
新出的record
类型也能满足lombok部分需求
配置
Maven
普通Java项目
|
|
Groovy和Java项目使用Lombok
配置编译插件
|
|
添加依赖
|
|
Gradle
|
|
使用
注解使用
POJO常用
注解 | 范围 | 功能 |
---|---|---|
@Data | 类 | Getter Setter RequiredArgsConstructor ToString EqualsAndHashCode 的集合 |
@Setter | 类 | 为属性提供 setter 方法 |
@Getter | 类 | 为属性提供 getter 方法 |
@NoArgsConstructor | 类 | 为类提供一个无参的构造方法 |
@AllArgsConstructor | 类 | 为类提供一个全参的构造方法 |
@Builder | 类 方法 构造器 | 生成 构造器模式 模板代码 |
@Delegate | 属性,方法 | 将属性的方法委派到当前对象上 常用于嵌套的POJO |
日志相关
- @CommonsLog
private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class);
- @Flogger
private static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass();
- @JBossLog
private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class);
- @Log
private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
- @Log4j
private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);
- @Log4j2
private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class);
- @Slf4j
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
- @XSlf4j
private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class);
异常相关
实现原理
Lombok的注解都是编译期源码注解(RetentionPolicy.SOURCE), 运行期是拿不到这些注解的
Author Kuangcp
LastMod 2018-12-20