【Spring Boot】Lombok,以及 Data 注解的一些说明

Lombok

Lombok 用于减少模块化代码,它可以自动生成 getters/setters 等。你只需要在函数前加上 @Data 注解。

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
@Data
public class Todo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String summary;
    private String description;
}

添加上 @Data 注解之后,以下方法会被自动添加:

  • ToString
  • EqualsAndHashCode
  • Getter
  • Setter
  • RequiredArgConstructor

在Maven中使用

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.20</version>
</dependency>

详解

@Data 是一个便捷的注解,它将@ToString, @EqualsAndHashCode, @Getter @Setter@RequiredArgsConstructor 注解的功能结合在一起。

@Data 类似于隐性地将上述的注解标注在类上(除了已存在有手动书写的构造器的情况下,不会再自动生成一个构造器),但是这些注解的属性( callSuper, includeFieldName, exclude)不能在 @Data 中设置。如果你想设置这些属性,就在@Data上添加相应的注解。

所有生成的 getter 和 setter 都是 public的。如果你想要覆盖它们的可见性,就显性添加 @Setter 和/或 @Getter 注解。你也可以用 AccessLevel.NONE 的注解来完全阻止生成 getter 和 setter

所有标注为 transient 的字段都不会自动生成和 hashCodeequals 有关的方法。所有static字段都不会被自动生成任何方法。

如果被注解类中已经存在一个相同名字、相同参数数量的方法,则哪个方法不会被再次生成,也不会有警告和错误。例如,如果你已经有一个 quals(AnyType param)equals 方法不会被自动生成。尽管参数的类型有可能不同。

@Data 可以处理字段的泛型参数。在泛型类构造对象时,可以用 staticConstructor 参数来生成一个私有的构造函数,以及返回新实力的静态方法。例如, @Data(staticConstructor="of") class Foo<T> {private T x;},你可以这样创建Foo的实例:Foo.of(5),而不用写:new Foo<Integer>(5);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值