一、Lombok简介:

    Lombok是一个基于LGPL的开源J2EE综合开发环境的Eclipse插件,对编码,发布,以及debug等各个软件开发的生命周期提供支持,支持JSP,EJB等。Lomboz是Eclipse的一个J2EE的插件,它将很多java应用服务器、J2EE组件和Web应用开发集成到Eclipse中,可以帮助Java开发者使用Eclipse建立、测试、部署J2EE应用。

    lombok 以简单的注解的形式来精简 java 代码,提升开发人员生产效率的辅助工具。特别是相对于 POJO,利用注解在编译期自动生成setter/getter/toString()/constructor之类的代码。

二、lombok 安装:

     使用 lombok 是需要安装的,如果不安装,IDE 则无法解析 lombok 注解。先在官网下载最新版本的 JAR 包,我下载的是lombok-1.16.4.jar

(1). 法一:双击下载下来的 JAR 包安装 lombok   

       安装目录为eclipse安装路径,安装完成后,查看eclipse.ini 是否出现配置:

  -Xbootclasspath/a:lombok.jar
        -javaagent:lombok.jar                          若出现,则说明安装成功。

(2).法二:eclipse / myeclipse 手动安装 lombok   

    a. 将 lombok.jar 复制到 myeclipse.ini / eclipse.ini 所在的文件夹目录下
    b. 打开 eclipse.ini / myeclipse.ini,在最后面插入以下两行并保存:
        -Xbootclasspath/a:lombok.jar
        -javaagent:lombok.jar
    c.重启 eclipse / myeclipse

(3).法三:IDE软件安装lombok插件

三、Maven添加依赖

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.10</version>
    </dependency>
</dependencies>

四、lombok 注解:
    lombok 提供的注解不多,可以参考官方视频的讲解和官方文档。
    Lombok 注解在线帮助文档:http://projectlombok.org/features/index.
    下面介绍几个我常用的 lombok 注解:

 (1)@Data   :注解在类上;

        自动为所有字段添加:

        @ToString

        @EqualsAndHashCode

        @Getter方法

       为非final字段添加

       @Setter

       @RequiredArgsConstructor

 (2)@Setter/@Gette:注解在属性上;为属性提供 setting/getting 方法(自动生成Getter/Setter方法)

使用lombok:

    import lombok.AccessLevel;
    import lombok.Getter;
    import lombok.Setter;
    public class GetterSetterExample {
        @Getter @Setter private int age = 10;
        @Setter(AccessLevel.PROTECTED) private String name;
    }

不使用lombok:

public class GetterSetterExample {
    private int age = 10;
    private String name;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    protected void setName(String name) {
        this.name = name;
    }
}


 (3)@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象

 (4)@Slf4j :    注解在类上;为类提供一个 属性名为log 的 log4j 日志对象 

 (5)@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法 

 (6)@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法

 (7)@NonNull : 注解在属性上,用来校验参数(可以帮助我们避免空指针)

   使用lombok:

  import lombok.NonNull;
    public class NonNullExample extends Something {
        private String name;  
        public NonNullExample(@NonNull Person person) {
        super(“Hello”);
        this.name = person.getName();
    }
}

不使用lombok:

public class NonNullExample extends Something {
    private String name;  
    public NonNullExample(@NonNull Person person) {
        super(“Hello”);
        if (person == null) {
            throw new NullPointerException(“person”);
        }
        this.name = person.getName();
    }
}

(8) @Cleanup: 自动帮我们调用close()方法。

使用lombok:

import lombok.Cleanup;
import java.io.*;
public class CleanupExample {
    public static void main(String[] args) throws IOException {
        @Cleanup InputStream in = new FileInputStream(args[0]);
        @Cleanup OutputStream out = new FileOutputStream(args[1]);
        byte[] b = new byte[10000];
        while (true) {
            int r = in.read(b);
            if (r == -1) break;
            out.write(b, 0, r);
        }
    }
}

不使用lombok:

import java.io.*;
    public class CleanupExample {
        public static void main(String[] args) throws IOException {
            InputStream in = new FileInputStream(args[0]);
            try {
                OutputStream out = new FileOutputStream(args[1]);
                try {
                    byte[] b = new byte[10000];
                    while (true) {
                    int r = in.read(b);
                    if (r == -1) break;
                    out.write(b, 0, r);
                    }
                } finally {
                    if (out != null) {
                        out.close();
                    }
                }
            } finally {
                if (in != null) {
                in.close();
            }
        }
    }
}

版权声明:本文为dahai2392原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/dahai2392/p/8571900.html