背景
最近接触的几个工程中Lombok插件出现频率比较高,趁机了解一下原理。
简要说明:
受益于JSR 269 API的发布,程序可以在编译阶段对AST进行节点的操作,从而注入相关的功能结点,从而包含在最终的字节码文件里。
优点:
- 减少了coding过程中的一些Getter/Setter等代码的生成。
缺点:
- 代码可读性差;
- 代码调试不方便;
- IDE需要插件支持。
总结:
- 整体而言,个人认为使用lombok弊大于利,不建议使用;
- JSR 269是个比较有意思的东西,做一些分析类的工具应该有帮助。
扩展思考:
Spring逻辑是否可以使用JSR 269原理生成字节码,而不是运行时动态生成呢?