lombok工具介绍

1.使用lombok的原因

当一个实体类里的成员属性太多时(特别是开发大型项目时),手动生成get、set方法会产生极大的不方面,使用lombok可以是我们自动的去生成这些方法,极大的提升开发效率。另外我们在自己写小demo时,可能会改变一些实体类的成员属性,紧接着我们又要修对应set、get中的参数会显得非常麻烦。

lombok快速开发,通过一些注解,获得一些方法(get、set、toString等)

2.快速开始

1.添加依赖
<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
</dependency>
2.注解的使用
  • @Date 用在实体类上:自动为该类的成员变量加上get、set、toString、hascode、equals方法
    下面进行图文展示:
    在java中进行编写:
@Data
public class Student {

    private Integer id;
    private String name;
    private int age;
    
}

通过原理可知:在我们编码过程中,我们只用该注解就应该已经把对应的大多数方法写进文件了,我们可以通过target目录查看:
我们可以通过target查找到.class文件

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

    public String toString() {
        return "User{id=" + this.id + ", name='" + this.name + '\'' + ", age=" + this.age + ", email='" + this.email + '\'' + '}';
    }

    public Long getId() {
        return this.id;
    }

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

    public String getName() {
        return this.name;
    }

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

    public Integer getAge() {
        return this.age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getEmail() {
        return this.email;
    }

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

    public User(Long id, String name, Integer age, String email) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.email = email;
    }

    public User() {
    }
}

可知java文件编码成.class文件后已经把我们相关的代码自动加入到代码中了

3.lombok原理

  • java文件先通过jvm生成语法树,再通过jvm将java编译成.class文件。
  • 我们进入@Data源码中进行查看:
    @Target({ElementType.TYPE})
    @Retention(RetentionPolicy.SOURCE)
    public @interface Data {
    String staticConstructor() default “”;
    }
    我们可以知道source表示编译源码阶段生效:
    原理:在java文件生成语法树后,@Data开始生效,对语法树进行对应的修改,然后语法树在通过jvm编译成字节码文件。

4.更多的注解

@Data 从上面可以知道该注解是加上所有的方法(除了构造方法,系统默认·有无参构造)

@Setter 为所有属性加上set方法
@Getter 为所有属性加上get方法
@ToString
@EqulasAndHash
以上4个都不怎么常用,只需要用@Data就行了

@AllArgsConstructor 添加有参构造
@NoArgsConstructor 添加无参构造
以上两个通常配套使用(只能生成全参和无参,若要生成个别参数的,就只能进行手动添加了)

@Accesssors 重要 作用开启set方法的链式法则:参数chain默认true开启链式法则,改为false可以关闭

User user=user.setAge(12).setName("haha").setId(3);

即set返回的不是void而是实体对象了

@Slf4j 自动在类的成员变量加上成员

private static final Logger log = LoggerFactory.getLogger(Student.class);

这样我们就可以在该类中直接只用log的相关方法而不需要去定义了

5.总结

以上所有的注解都上加在类上的
以上所有方法都是在编译时期生效的

当然执行lombok不要忘了先在idea插件库中下载lombok插件才行,直接在idea的plugin市场搜索lombok即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值