Lombok插件安装及使用说明

一,Lombok简介

        Lombok是用于消除代码,使代码更加简洁和快速。比如通过注解的方式来消除POJO的getter和setter方法,Lombok主要是通过注解的方式来使用的。比如在一个POJO中,一个属性的getter和setter可通过@Getter和@Setter注解来取代,这样代码量很少了,代码如下(注意看红包标记的代码):

import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;

public class UserInfo  extends BaseEntity{

    @Id
    @Column(name = "Id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Getter
    @Setter
    private Integer id;

}

上面的代码与下面的代码是等价的。

import javax.persistence.*;

public class UserInfo  extends BaseEntity{

    @Id
    @Column(name = "Id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    public Integer getId() {
        return id;
  }
public void setId(Integer id) { this.id = id; }}在编译后,Lombok的@Getter和@Setter注解,会生成相应的getter和setter方法。


二,Lombok使用

    1,IDEA安装Lombok插件    

        先说下 为什么要安装要在IDEA中安装Lombok。 如果在.java文件中有@Getter,其实在编译后的.class文件会有属性的getter方法,但如果不安装插件,那直接调用属性的getter方法会失败,虽然编译的.class文件有getter。但安装插件后就好了,不管是否编译了都可以直接调用。

        我当时使用Lombok时是在IDEA中开发的,IDEA版本是2017.2,就以IDEA来进行说明。首先在IDEA中安装Lombok插件。依次点击File——>settings——>Plugins,如果搜索不到Lombok插件,则可以通过浏览器栻来安装,操作如下图。


        点击“Browse repositonies”后,会弹出新的界面,然后造反“Lombok Plugin”,然后点击右上角的“Install”来安装插件,如下图所示。安装成功后,IDEA会提示你重启IDEA,重启IDEA即可。


        2,Lombok注解详细使用说明

        在使用时,首先要引入Lombok的jar包,代码如下:

        <!-- lombok依赖 -->
        <dependency>
	    <groupId>org.projectlombok</groupId>
	    <artifactId>lombok</artifactId>
	    <version>1.16.8</version>
	</dependency>
    下面通过先对注解解释,然后附上代码的方法来进行描述Lombok的具体使用。同时将常用的注解放在最前面。

     1,@Getter/@Setter:用于生成getter/setter方法,可以用在类或者属性上;若用在属性上,则只是用于替代这个属性的getter方法,如果是用在类上,则是用于替代这个类所有属性的getter方法。还可通过@AccessLeve来控制生成的getter/setter方法的访问权限,Lombok提供了PUBLIC、PROTECTED、PACKAGE、PRIVATE、NONE 和MODULE六个值,前四个值分别是public、protected、包和private,这和Java的访问控制权限是对应的,也很好理解,AccessLevel.NONE手动禁用对应字段的getter和setter生成,MODULE是模块的意思,还没仔细思考其使用的含义。

        官网上有一段说是下面这样讲的,但我还没去看具体什么回事,先贴出来可以看看。

        要将注释放在生成的方法上,可以使用onMethod=@__({@AnnotationsHere})要将注释放在生成的setter方法的唯一参数上,可以使用onParam=@__({@AnnotationsHere})但要小心!这是一个实验性功能。有关更多详细信息,请参阅onX( 地址t:tps://projectlombok.org/features/experimental/onX)功能的文档

    使用@Getter和@Setter注解之前的代码如下:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.woxin.itsm;

public class Person {
    private String username;
    private String sex;
    private String tel;

    public Person() {
    }

    public String getUsername() {
        return this.username;
    }

    private void setUsername(String username) {
        this.username = username;
    }

    public String getSex() {
        return this.sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    String getTel() {
        return this.tel;
    }
}

 使用之后的代码如下:

package com.woxin.itsm;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;

/**
 * @Author: Qinciwen
 * @Description:
 * @Date: Created in 10:54 2018/5/10
 * @Modified By:
 */

public class Person {

    @Getter
    @Setter(AccessLevel.PRIVATE)
    private String username;

    @Getter
    @Setter
    private String sex;

    @Getter(AccessLevel.MODULE)
    @Setter(AccessLevel.NONE)
    private String tel;

}

@Getter和@Setter还支持的一些配置如下,这些配置可以配置成全局的。

lombok.accessors.chain= [ truefalse](默认值:false)

 如果设置为 true ,生成的setter将返回 this (而不是 void )。注释的显式配置 chain 参数 @Accessors 优先于此设置。 lombok.accessors.fluent = [  true false ](默认值:false) 如果设置为 true ,生成的getter和setter将不会以“bean标准”作为前缀 get is 或者 set 相反,这些方法将使用与该字段相同的名称(减前缀)。注释的显式配置 chain 参数 @Accessors 优先于此设置。 lombok.accessors.prefix + =  字段前缀 (默认:空列表) 这是一个列表属性; 条目可以与 += 操作员一起添加 -= 操作员可以删除父配置文件中的继承前缀。Lombok将从字段名称中去除任何匹配的字段前缀,以确定要生成的getter / setter的名称。例如,如果 m 是此设置中列出的前缀之一,则名为的字段 mFoobar 将导致名为 getFoobar() not 的getter  getMFoobar() 注释的显式配置 prefix 参数 @Accessors 优先于此设置。 lombok.getter.noIsPrefix = [  true false ](默认值:false) 如果设置为 true ,为 boolean 字段生成的getter 将使用 get 前缀而不是默认 is 前缀,并且任何生成的调用getter的代码(如 @ToString ,)也将使用, get 而不是 is lombok.setter.flagUsage = [  warning error ](默认:未设置) @Setter 如果配置, Lombok将标记任何用作警告或错误。 lombok.getter.flagUsage = [  warning error ](默认:未设置)

@Getter如果配置, Lombok将标记任何用作警告或错误。

另外,下面的说明也值得注意。

为了生成方法名称,该字段的第一个字符(如果是小写字符)是标题封装的,否则它将保持不变。然后,get / set / is是前缀。

如果任何方法已经存在且名称相同(不区分大小写)且参数个数相同,则不会生成任何方法。例如,getFoo()如果已经有一种方法,getFoo(String... x)即使在技术上可行也不会生成该方法。这个警告的存在是为了防止混淆。如果由于这个原因跳过了方法的生成,则会发出警告。可变参数计为0到N参数。你可以标记任何方法@lombok.experimental.Tolerate来将它们从Lombok上隐藏起来。

对于紧跟着一个标题大小写字母的boolean字段is,没有任何前缀用于生成getter名称。

任何变化boolean不会导致使用is前缀而不使用get前缀; 例如,返回java.lang.Boolean结果的get前缀,而不是is前缀。


    2,@AllArgsConstructor:用于生成全参数的构造函数,用在类上;@NoArgsContructor:用于生成无参数的构造函数,用在类上;@RequiredArgsContructor:为每个需要特殊处理的字段生成一个带有一个参数的构造函数。


      5,@NonNull:用于判断是否==null,并抛出异常,换句话说进行空值检查;
      6,@Cleanup:用于关闭并释放资源,可以用在IO流上;
      7,@Buinder:用于将类改造成builder(建造者)模式,用在类、方法或者构造函数上;
      8,@Data:是一个复合注解,用在类上,使用后会生成默认的无参构造函数、所有属性的getter、所有非final属性的setter方法,并重写toString、equals、hashcode方法;
      9,val:用于变量上,所声明的变量是final的;
      10,var:用于变量上,所声明的变量是非final的;


官网:https://projectlombok.org/features/all

猜你喜欢

转载自blog.csdn.net/qinxian20120/article/details/80253506
今日推荐