背景

Lombok是一个Java库,它通过注解减少了大量常规代码,例如getter和setter方法,equals,hashCode,toString等方法。使用Lombok可以减少模板代码的编写,使代码更简洁,更易于阅读和维护。

常用注解介绍

  • @Setter 注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。
  • @Getter 使用方法同上,区别在于生成的是getter方法。
  • @ToString 注解在类,添加toString方法。
  • @EqualsAndHashCode 注解在类,生成hashCode和equals方法。
  • @NoArgsConstructor 注解在类,生成无参的构造方法。
  • @RequiredArgsConstructor 注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。
  • @AllArgsConstructor 注解在类,生成包含类中所有字段的构造方法。
  • @Data 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
  • @Slf4j 注解在类,生成log变量,严格意义来说是常量。private static final Logger log = LoggerFactory.getLogger(UserController.class);

举例:@Setter、@Getter

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<scope>provided</scope>
</dependency>

<scope>provided</scope> 表示该依赖在运行时不需要包含在项目构建中,而是由JDK或者应用服务器提供。换句话说,这个依赖项在编译时需要,但在运行时不需要。

不使用 Lombok

package com.zhangyu.model;

public class User {
    private Integer id;
    private String name;
    private String email;

 	public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

使用 Lombok

package com.zhangyu.model;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class User {
    private Integer id;
    private String name;
    private String email;
}
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐