1.Lombok插件使用注解的方式,在代码编译阶段按照一定的规则生成类的setter/getter/constructor/equals/hashCode等方法
2.首先新建一个实体类,这里新建User.java
3.@Setter @Getter 注解
1)用在类上
@Setter @Getter
public class User {...}
编译之后的User.class自动生成了属性id的setter和getter
public class User {
private String id;
public User() {
}
public void setId(String id) {
this.id = id;
}
public String getId() {
return this.id;
}
}
2)用在方法上,生成的class文件和用在类上是一样的
public class User {
@Setter @Getter
private String id;
}
@Setter和@Getter的value属性:设置setter和getter的访问级别,默认值是 AccessLevel.PUBLIC;
@Setter(value = AccessLevel.PRIVATE)
@Setter(AccessLevel.PRIVATE)
@Setter & @Getter的onMethod属性:在注解中使用其他组件的注解(如hibernate,mybatis等)
源文件:
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Column;
public class User {
@Setter(onMethod = @_(@Column(name="user_id"))) @Getter
private String id;
}
User.class:其中@column注解便是使用@setter(onMethod=xx)进行方法注解的
import javax.persistence.Column;
public class User {
private String id;
public User() {
}
@Column(
name = "user_id"
)
public void setId(String id) {
this.id = id;
}
public String getId() {
return this.id;
}
}
@Getter的lazy属性:一般用在private final的缓存属性上,lazy默认是false,如果设置为true,则会在实际使用到缓存的时候才会生成缓存,并且Lombok会自动处理线程安全的问题。
User.java
public class User {
@Getter(lazy = true)
private final Map cache = initXXCatch();
private Map initXXCatch(){
return new HashMap();
}
}
User.class
lazy=true
private final AtomicReference<Object> cache = new AtomicReference();
public Map getCache() {
Object value = this.cache.get();
if (value == null) {
AtomicReference var2 = this.cache;
synchronized(this.cache) {
value = this.cache.get();
if (value == null) {
Map actualValue = this.initXXCatch();
value = actualValue == null ? this.cache : actualValue;
this.cache.set(value);
}
}
}
return (Map)((Map)(value == this.cache ? null : value));
}
lazy=false生成的getter:
private final Map cache = this.initXXCatch(); public Map getCache() { return this.cache; }
@Setter的onParam属性:这个注解和onMethod一样,也是在注解中加入注解
4.@NonNull注解:
5.@ToString注解
6.@EqualsAndHashCode注解
7.@Data注解
8.@Synchronized注解
9.@SneakyThrows注解
原文:https://www.cnblogs.com/cici20166/p/8491155.html