lombok插件
Posted cici20166
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lombok插件相关的知识,希望对你有一定的参考价值。
1.Lombok插件使用注解的方式,在代码编译阶段按照一定的规则生成类的setter/getter/constructor/equals/hashCode等方法
2.首先新建一个实体类,这里新建User.java
[email protected] @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一样,也是在注解中加入注解
以上是关于lombok插件的主要内容,如果未能解决你的问题,请参考以下文章