Lombok学习笔记
[toc]
1 Lombok是什么
—手段:注解
很多重复的get,set,
减少代码冗余,pojo类不会那么长
通过注解的方式,帮忙生成get和set代码,没有技术含量的工作。
通过注解的方式告诉lombok组件生成get和set.
lombok是一种Java实用工具,可用来帮助开发人员消除Java中冗余代码,
尤其是对于简单的Java对象(POJO),它通知注解实现这一目的。
2 Lombok的原理
在Java编译期利用注解搞事情 —>运行 .class文件里是有get,set方法的
AAA.java ----编译(根据注解加上get(),set())-----AAA.class
3 lombok的安装
IDEA安装:为IDEA安装lombok插件,告诉IDEA识别lombok注解,不然会报红,
别的类要调用get(),set()方法也会提示没有该方法。仅仅是为IDEA里不报红,
能调用到服务的。idea没有智能提示get,set方法了.
maven中添加lombok依赖包,则是编译时需要用到的lombok真正转化用的。
1.lombok插件安装(在线+离线)
2.添加lombok的maven依赖
4 注解@Getter @Setter
@Getter ----getAAA()
@Setter ----setAAA()
5 注解@ToString
@ToString ----toString()
6 注解@EqualsAndHashCode
@EqualsAndHashCode —equals() 对象是否同一个对象
—hashCode() 对象hashCode是否相等
—canEqual()
7 注解@NonNull
@NonNull, —参数不能为空,意义不是很大
8 注解@NoArgsConstructor
@NoArgsConstructor —无参构造函数
@RequiredArgsConstructor --有参构造函数
@AllArgsConstructor —所有参数构造函数
9 注解@Data
@Data ---- @NoArgsConstructor
---- @Getter
---- @Setter
---- @ToString
---- @EqualsAndHashCode
10 注解@Builder
@Builder ----链式编程
Person person = Person.builder().id("11").username("zhangsan").build();
11 注解@Log
@Log -------等价
private static final Logger log = Logger.getLogger(Person.class.getName());
log.info("hello world");
12 注解@log4j
import lombok.extern.log4j.Log4j;
@Log4j
public class Client {
}
等价于:
import org.apache.log4j.Logger;
public class Client {
private static final Logger log = Logger.getLogger(Client.class);
}
13 注解@Slf4j
建议使用
-
@Log4j是具体的日志实现。而@Slf4j是一个抽象层,它允许程序使用任意一个日志类库,使程序更加独立。
-
二者都注解类,可用于打印日志,但是更推荐使用@Slf4j。
-
@Slf4j可以使用占位符"{}",可减少代码中字符串连接次数
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class Client {
}
以上将编译成
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Client {
private static final Logger log = LoggerFactory.getLogger(Client.class);
}
14 注解@val
@val —意义不大
15 注解@Cleanup
@Cleanup —意义不大
16 代码演示
依赖包
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
</dependency>
Student
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
private int id;
private String name;
private int age;
private String email;
@JSONField(name="studentBirthday",format="yyyy-mm-dd hh:mm:ss")
private Date birthday;
}