Lombok 编译期代码简化

zjc 于 2026-08-18 发布

Lombok 用来减少 Java 的样板代码。项目里常见的用法是 @Slf4j@Getter@Setter。它让代码短一些,但仍然只是编译期工具,不应改变类的职责设计。

一、日志声明

@Slf4j
@Component
public class ServiceGlobalFilter implements GlobalFilter, Ordered {

https://github.com/springvortex/spring-cloud-alibaba/blob/release/v1.0.0/service-gateway/src/main/java/com/zjc/gateway/filter/ServiceGlobalFilter.java

不用每个类手写 LoggerFactory.getLogger,日志变量名统一为 log,阅读和检索都更稳定。

二、模型代码

Entity、DTO、配置属性常用 @Getter@Setter。这类代码没有复杂逻辑,交给 Lombok 可以减少噪音。

三、工具链要配好

项目同时使用 Lombok 和 MapStruct,父 POM 的编译插件配置了 annotation processor path 与 binding。这个细节很重要,否则生成代码和预期可能不一致。

四、避坑点

  1. @Data 不适合无脑用在所有类上,相等性语义容易被改变。
  2. Lombok 减少代码量,不等于减少设计责任。
  3. 打包时 Lombok 被排除,运行期不依赖它。
  4. 团队使用注解要收敛,避免每个人都有一套习惯。

五、经验总结

Lombok 的定位很朴素:删掉重复样板,保留清晰模型。它适合做小工具,不适合用来掩盖混乱的类设计。