IDE:
IntelliJ IDEA
首先在设置的插件栏中安装lombok,然后使用如下的pom依赖:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
注解介绍:
- @toString
生成toString()方法,默认情况下,它会按顺序(以逗号分隔)打印你的类名称以及每个字段。
可以这样设置不包含哪些字段@ToString(exclude = "id") / @ToString(exclude = {"id","name"})
如果继承的有父类的话,可以设置callSuper 让其调用父类的toString()方法,例如:@ToString(callSuper = true)
import lombok.ToString;
@ToString(exclude = {"id","name"})
public class User {
private Integer id;
private String name;
private String phone;
}
//生成toString方法如下:
public String toString(){
return "User(phone=" + phone + ")";
}
- @Getter and @Setter
你可以用@Getter / @Setter注释任何字段,让lombok自动生成默认的getter / setter方法。
默认生成的方法是public的,如果要修改方法修饰符可以设置AccessLevel的值,例如:@Getter(access = AccessLevel.PROTECTED)
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
public class User {
@Getter(AccessLevel.PROTECTED) @Setter private Integer id;
@Getter @Setter private String name;
@Getter @Setter private String phone;
}
- @EqualsAndHashCode
生成hashCode()和equals()方法,
默认情况下,它将使用所有非静态,非transient字段。但可以通过在可选的exclude参数中来排除更多字段。或者,通过在parameter参数中命名它们来准确指定希望使用哪些字段。
- @RequiredArgsConstructor
@RequiredArgsConstructor会生成构造方法(可能带参数也可能不带参数),
如果带参数,这参数只能是以final修饰的未经初始化的字段,或者是以@NonNull注解的未经初始化的字段
@RequiredArgsConstructor(staticName = "of")会生成一个of()的静态方法,并把构造方法设置为私有的
- @Data
@Data 包含了@ToString,@EqualsAndHashCode,@Getter / @Setter和@RequiredArgsConstructor的功能
以后有更多的使用到的会再做补充
- @builder
该注解可以将我们的一个bean类包装成一个构建者模式,编译时增加了一个Builder内部类和全字段的构造器。
package com.pollyduan;
import java.util.Date;
import lombok.Builder;
import lombok.Data;
@Builder
public class User {
private Integer id;
private String userName;
private String password;
private String email;
private Integer age;
private Date signupTime;
public static void main(String[] args) {
/*
* User user=new User();//The constructor User() is undefined
*/
User user = new User(1001, "pollyduan", "123456", "pollyduan@pollyduan.com", 30, new Date());
//或者
user=User.builder()
.age(30)
.userName("pollyduan")
.build();
System.out.println(user);
}
}
一般情况下我们使用log4j或者slf4j定义一个log会这样写:private static final Logger log = Logger.getLogger(getClass());
但是在class上引入注解@Slf4j即可直接使用.
@Slf4j
public class SectionVO {
public SectionVO() {
log.info("I'm sectionVO : {}", toString());
}
}
反编译SectionVO.class发现自动生成了
private static final Logger log = LoggerFactory.getLogger(SectionVO.class);
@NonNull注解
这个注解可以用在成员变量或成员方法或者构造方法的参数前面,会自动产生一个关于此参数的非空检查,如果参数为空,则抛出一个空指针异常。