用途:整理 Lombok 注解在 Java 项目中的正确使用规则,重点解决注解组合、继承、序列化框架与 ORM 框架之间的冲突。
主要能力:覆盖 @Data/@Builder/@Slf4j 的组合边界;继承时 @EqualsAndHashCode(callSuper=true) 的正确写法;@Builder 在子类中的陷阱及 @SuperBuilder 方案;@Jacksonized + @Builder 支持 Jackson 反序列化;MyBatis/MyBatis-Plus 实体注解兼容性;@Value 不可变对象;@Builder.Default 保留默认值;@With 生成不可变副本。
常见错误与用法:子类 @Data 需显式 callSuper=true;MyBatis 实体不要用 @Builder(破坏无参构造),若必须用则加 @NoArgsConstructor 与 @AllArgsConstructor;Jackson 反序列化 @Builder 对象需 @Jacksonized;@SuperBuilder 要求父类与子类都标注;@Builder.Default 仅在 builder 模式生效;DTO 建议用 @Value 而非 @Data;JPA 实体避免 @Data,改用 @Getter @Setter 并手写 equals/hashCode;@ToString.Exclude 排除关联字段防循环引用;@Builder 自带全参构造器,无需重复 @AllArgsConstructor。
适用场景:Java 后端实体、DTO/VO、配置类与 Service 的注解选型。
限制:不涉及 Lombok 安装配置与 Java Records;需 IDE 插件与 annotation processor;@Value 字段为 final,不能有 setter;@With 只能用于非 final 字段。本技能不收集、存储或传输任何用户数据。