Lombok好坏参半。
经过一段时间的思考,决定在自己的基础库和今后的项目中大量使用。
没使用1个注解,一定先把生成的代码研究清楚,知道其局限性。
在基础类库中,如果有问题,会传染到很多项目。
目前投入使用的第1个注解是: @Slf4j
Example:
@Slf4j
public class LogExample {
}
will generate:
public class LogExample {
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
}
This annotation is valid for classes and enumerations.
这种自动生成工具,肯定只能说标准化等,一旦实现不好,用于产生各种bug。
@Slf4j
很久以前,日志喜欢用log4j,后来转到了Slf4j更通用一些。
Lombok用@Slf4j注解,可以生成标准化的代码。
@Slf4j public class LogExample { }
will generate:
public class LogExample { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class); }
这样可以强制,每个类里面,保持一致的写作和命名,而且不用自己手写了。
@Getter @Setter
好处说 自动生成getter setter,以前喜欢用Eclipse的自动生成。如果增加修改了字段,需要重新生成,很麻烦。
而Lombok很好地解决了这个问题。
但是也有弊端,经常喜欢用Eclipse Ctrl+Shift+G 找出一个方法的所有依赖,
用了Lombook,生成的代码,不方便看到,因而不容易找到 这个方法被用到的 所有地方。
@EqualsAndHashCode 存在坑,需要注意。
Synchronized 代码中不经常使用同步语句。如果需要使用的时候,对代码的可读性、精确性 要求高点。
当你需要写 多线程或分布式代码的时候,语句写得不清晰,很容易出问题。
参考资料
https://blog.csdn.net/mediocre117/article/details/83141208
https://www.cnblogs.com/wuyuegb2312/p/9750462.html
官方JavaDoc文档
https://projectlombok.org/api/overview-summary.html
https://www.cnblogs.com/whhjava/p/7049731.html
Lombok原理分析与功能实现
https://blog.mythsman.com/2017/12/19/1/
https://blog.csdn.net/zhwyj1019/article/details/82155135