Java Lombok 减少代码冗余 利刃

来源:互联网 发布:手牌美工刀片 编辑:程序博客网 时间:2024/04/25 21:30

前言:

现在是ORM框架大行其道的时代,有着如Hibernate这样重量级的框架,提供Java<->数据的双向映射,也有如Mybatis这样的轻量级框架,提供Java<-数据的单方向映射,

无论使用的是哪种流行的框架,在其中都少不了Model类的编写,还有其中错综负责的getter/setter方法,这些getter/setter方法的存在,使得代码变得非常的臃肿。那么需要怎

么解决这个问题呢,便引入了这篇文章的主角Lombok。

1.下载:

Lombok的官网地址是:http://projectlombok.org/ 

2.使用:

Lombok是一种JavaArchive(jar)文件,旨在为了减少编码时的冗余。

自动安装方法:

直接运行lombok.jar文件,首先要确保机器的Java环境已正常配置,在自动安装完成后,会达到和手动安装一样的效果。

手动安装方法:

1.将lombok.jar复制到myeclipse.ini/eclipse.ini所在的文件目录中。

2.打开 eclipse.ini / myeclipse.ini,在最后面插入以下两行并保存:

-Xbootclasspath/a:lombok.jar

-javaagent:lombok.jar

3.重启 myeclipse/eclipse

注:这是官方提供的一种安装方式,当使用的是myeclipse时,按照上述方法时不能正常使用的,需要将myeclipse的可执行文件名称由myeclipse.exe更改为

eclipse.exe,此时才可以正常使用(具体原因是不是因为lombok在内部指定了一些常量,还未定)。

IDE中使用步骤:

按照正常步骤安装Lombok.jar文件后,在项目中需要引入Lombok.jar文件,将其加入到ClassPath路径下。

3.详解:

Lombok是基于注解完成标记的,再对已经标记的变量进行特殊解析,Lombok中包含着如下一些自定义注解:

@val/@NonNull/@Cleanup/@Getter / @Setter/@ToString/@EqualsAndHashCode/@NoArgsConstructor/@RequiredArgsConstructor and @AllArgsConstructor

/@Data/@Value/@Builder/@Synchronized/@Getter(lazy=true)/@Log、Lombok提供了这几种注解来完成对代码的精简。

Lombok能做到在IDE少编写代码,既不是用annotations process,也不是反射,而是直接在编译器对原码的编译过程进行操作。

具体示例如下:

使用Lombok的MModel类:

    public @Data class User {
        private String name;

    }

或者

    public class User {
        @Getter @Setter
        private String name;

    }

此时:若在IDE的Outline视窗中可以看到在字节码中直接生成了name的getter/setter方法,这极大的简化了在编程过程的代码量,况且Lomnok无需第三方依赖,便可完成

对于Model类的操作。

在其他类中可以像正常使用类一样使用:

    User user = new User();
    user.setName("Wangbc");

    user.getName();

4.注解含义:

·@Data:相当于同时使用了@String、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstrutor这些注解,对于Pojo类十分有用

        ·@NonNull:给方法参数增加这个注解会自动在方法内对该参数进行是否为空的校验,如果为空,则抛出NPE

        ·@CleanUp:自动生成try-finally这样的代码来关闭流

        ·@Getter(lazy=true):可以替代经典的Double Check Lock样板代码。

        ·其他的可以参考官网文档进行详细了解。

5.不足:

尽管Lombok可以对代码进行精简,但是在使用的过程中还是会遇到问题:例如,源码中代码的隐藏使得在代码调试的过程中难度增加,增加代码重构的麻烦,而且

Lombok在使用过程中与eclipse尚不能完美兼容,这些在实际应用过程中都是需要考虑的问题,但本人觉得其无伤大雅。

6.完结:

Lombok是一个很小的,但是很实用的开源项目,它可以大幅的减少由于ORM框架应用导致的代码冗余。无论如何,对于已经接近完善project的源码中,毫无用处的重复代

码会降低其可读性,精而少的代码才更易维护。

1 0