对Lombok的一些个人见解

Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。-百度百科

首先做Java开放的相信都已经对这个插件很熟悉了,他不仅会自动帮我们生产实体类的get/set方法,同时他还有更强大的功能,他除了自动生成get/set方法外还支持建造者模式、链式编程,而且只需要添加一个注解@Builder(toBuilder = true)就可以使用建造者模式来创建实体类了,从上面种种行为来看这个插件都无比优秀,但是他缺点其实也很多,1.从开发者的角度来看,如果一个项目有一个人使用Lombok,你们整个项目的开发人员都必须安装这个插件才可以正常运行,对开发者不太友好,有一种强制性要求;2.代码可读性,可调试性低在代码中使用了Lombok,确实可以帮忙减少很多代码,因为Lombok会帮忙自动生成很多代码。但是这些代码是要在编译阶段才会生成的,所以在开发的过程中,其实很多代码其实是缺失的。在代码中大量使用Lombok,就导致代码的可读性会低很多,而且也会给代码调试带来一定的问题。比如,我们想要知道某个类中的某个属性的getter方法都被哪些类引用的话,就没那么简单了。(引用百度的) 3.破坏封装性,使用Lombok默认会自动帮我们把所有属性全部自动生成,但是可能部分属性,我们只需要使用set方法/get方法一种就够了,但是他会自动全部默认生成。

4.Lombok坑多而且是很难发现那种:首先Lombok对对象属性的命名要求很严格,如果命名不太复合他的格式生成的get/set并发系统需要的,具体坑可以看下面列子(由于命名不规范(为了简便))而出现的坑:

下面这种图是手动创建get/set方法,图中可以看到有绑定到前端传输过来的值在list里面

对Lombok的一些个人见解

下面这种图使用lombok注解@Data自动生成get/set方法,可以看到List<String>这个属性变成null,并没有自动绑定属性值:

对Lombok的一些个人见解

究竟什么原因造成的呢,其实是因为这个命名问题造成lombok生成的get/set方法并不符合系统需要的get/set方法从而导致属性无法自动绑定,下面看图

 

对Lombok的一些个人见解

从上面的图可以看到,lombok生成的get/set方法不符合系统需要的所有在自动绑定属性值的过程中无法绑定从而导致null出现

总结:从上面总总分析,Lombok插件帮我们自动生成很多代码,让代码非常整洁,但也在优秀的同时,他也有很多缺点,虽然帮我们省略了很多代码,但是也给系统带来了一些隐藏的问题。具体使用情况还是得根据自己和项目需要做觉得,个人不推荐使用哈哈