@Data

https://www.jianshu.com/p/c1ee7e4247bf

@Data : 注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法。

  • 个人理解:有了@Data就不用 @Getter和@Setter了

@AllArgsConstructor : 注在类上,提供类的全参构造 @NoArgsConstructor : 注在类上,提供类的无参构造 @Setter : 注在属性上,提供 set 方法 @Getter : 注在属性上,提供 get 方法 @EqualsAndHashCode : 注在类上,提供对应的 equals 和 hashCode 方法 @Log4j/@Slf4j : 注在类上,提供对应的 Logger 对象,变量名为 log

使用Lombok导致打印的tostring中缺少父类的属性

在@Data的基础上再加一个@ToString(callSuper = true)注解,callSuper = true即解决缺少父类属性的问题。
https://blog.csdn.net/wwrzyy/article/details/85090214

实体继承与@Builder注解共存

https://www.cnblogs.com/lori/p/10266508.html

无需自定义写equals和hashcode方法 - @EqualsAndHashCode

场景:判断对象相等时需要重写equals和hashcode方法;使用lombok可简化编写流程
https://www.jianshu.com/p/70fa9b64b652

可以使用@EqualsAndHashCodelombok生成equals(Object other)hashCode()方法的实现来注释任何类定义。默认情况下,它将使用所有非静态,非瞬态字段,但您可以通过使用@EqualsAndHashCode``.Include或标记类型成员来修改使用哪些字段(甚至指定要使用各种方法的输出)@EqualsAndHashCode``.Exclude。或者,您可以准确地指定哪些字段,或者您希望通过与标记它们被使用的方法@EqualsAndHashCode.Include和使用@EqualsAndHashCode(onlyExplicitlyIncluded = true)

如果应用于@EqualsAndHashCode 扩展另一个类的类,则此功能会变得有点棘手。通常,为这样的类自动生成equalshashCode 方法是个坏主意,因为超类还定义了字段,这些字段也需要equals / hashCode代码,但不会生成此代码。通过设置callSuper真正的,可以包括equalshashCode 你的超类中生成的方法的方法。因为hashCode ,结果super.hashCode() 包含在哈希算法中,因为equals 如果超级实现认为它不等于传入的对象,则生成的方法将返回false。请注意,并非所有equals 实现都能正确处理这种情况。但是,lombok生成的equals 实现确实正确处理这种情况,所以如果它也有一个lombok生成的equals 方法,你可以安全地调用你的超类等于。如果你有一个明确的超类,你被迫提供一些价值callSuper 来承认你已经考虑过了; 如果不这样做会导致警告。