Lombok的优点与缺点

Lombox的使用

  • IDE中安装Lombok插件,目前Lombok支持多种IDE,其中包括主流的Eclips、Intellji IDEA、Myeclipse等都是支持的

  • 导入相关依赖,Lombok 支持使用多重构建工具进行导入依赖,目前主要支持maven、gardle、ant等均支持

    1
    2
    3
    4
    5
    6
    <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
    </dependency>
  • 代码中使用注解,Lombok精简代码的方式主要是通过注解来实现,其中常用的有@Data、@Getter/@Setter、@Builder、@NonNull等

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /**
    使用@Data注解在类上,相当于同时使用了@ToString@EqualsAndHashCode@Getter@Setter@RequiredArgsConstrutor这些注解,对于POJO类十分有用。
    */
    import lombok.Data;
    @Data
    public class Menu {
    private String shopId;
    private String skuMenuId;
    private String skuName;
    }

优点

Lombok是一款非常实用Java工具,可用来帮助开发人员消除Java的冗长代码,尤其是对于简单的Java对象(POJO)。它通过注释实现这一目的

缺点

  • 强制让同事在IDE中安装对应的插件,更重要的是如果我们定义的一个jar包中使用了Lombok,那么就要求所有依赖这个jar包的所有应用都必须安装插件。
  • 代码可读性,可调试性低。因为Lombok会帮忙自动生成很多代码。但是这些代码是要在编译阶段才会生成的,所以在开发的过程中,其实很多代码其实是缺失的
  • 盲目使用对自动生成的代码不够了解,Lombok使代码开发非常简便,这就使得部分开发者对其产生过度依赖。如果对于各种注解的底层原理不理解的话,很容易产生意想不到的结果。
  • 影响升级,如果在项目中使用了Lombok会导致如果Lombok官方没有及时升级版本到对应的jdk,那么使用Lombok的代码也无法升级到新的jdk版本
  • 破坏类的封装性。使用Lombok会自动给类的所有属性加上get和set方法,而面向对象封装的定义是:通过访问权限控制,隐藏内部数据,外部仅能通过类提供的有限的接口访问、修改内部数据。所以,暴露不应该暴露的 setter 方法,明显违反了面向对象的封装特性。