1.官网:https://projectlombok.org/
2.干什么用的?
①简化pojo类的书写(getter,setter,tostring,equals,hascode...)
pojo:plain old/ordinary java object 简单的java对象,不包含业务逻辑、能够控制自己内部n个属性访问的java对象
3.pojo和 java beans
①各类pojo
dto:data transfer object
do:data object(表的字段一一对应)、po:persist object
bo:buiness object
vo:view/value object 值对象
各类pojo在恩来项目中的应用:
②pojo vs javabeans
相同点:都没有业务逻辑
不同点:pojo不需要有无参构造,javabeans必须有
pojo属性的访问权限无限制,javabeans private setter 和getter
如果是javabeans 那么一定是pojo,如果是pojo不一定是javabeans
4.lombok的安装:
引入lombok的jar包:
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
安装插件并设置
5.lombok注解的使用:
import lombok.*;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;
@Getter
@Setter
//全参构造
@AllArgsConstructor
//无参构造
//@NoArgsConstructor
/**
*
* @NonNull
* 属性加了@NonNull,则该属性被包含在构造函数中
* final:定义初始化或者构造初始化,当加了final,则该属性被包含在构造函数中
*/
//必须要包含的构造函数
@RequiredArgsConstructor
//只打印name
//@ToString(of = {"name"})
//排除name打印其他属性
//callSuper指定调用父类的toString方法
@ToString(exclude = {"name"},callSuper = true)
//只使用name来生成Equals和HashCode方法
@EqualsAndHashCode(of = {"name"})
//相当于@Getter@Setter@EqualsAndHashCode,默认是按照所有属性比较
@Data
//链式编程,本身不做任何操作,需要基于@Data或者@Getter@Setter才能生效
//fluent流利的,user.name("lizefei") 不需要写成setName("lizefei"),set可以不用写
@Accessors(chain = true,fluent = true)
//一般在业务层使用,专门针对项目中使用slf4j
@Slf4j
public class User {
private String name;
//该属性加了@NonNull,则该属性被包含在构造函数中
@NonNull
private String address;
private int age;
//不生成get和set方法
@Getter(value = AccessLevel.NONE)
@Setter(value = AccessLevel.NONE)
//final:定义初始化或者构造初始化,当加了final,则该属性被包含在构造函数中
private final String finalProp;
}