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一样,也是在注解中加入注解

 

[email protected]注解:

[email protected]注解

[email protected]注解

[email protected]注解

[email protected]注解

[email protected]注解


以上是关于lombok插件的主要内容,如果未能解决你的问题,请参考以下文章

lombok插件

idea 安装 lombok插件

IDEA安装Lombok插件失败

Lombok插件的基本使用

Lombok插件

IntelliJ IDEA lombok插件的安装和使用