Springcloud 学习笔记08-idea中lombok插件的安装与使用教程;@Builder注解使用

1.Lombok简介

Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。

2.Lombok安装

IDEA中添加Lombok插件,File->Setting->Plugins搜索Lombok Plugin,点击install,安装完成后重启IDEA

在maven项目的pom.xml中添加依赖

     <!--Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>

3.lombok使用

首先,用到的几个注解:

3.1 @Data

使用这个注解,就不用再去手写Getter,Setter,equals,canEqual,hasCode,toString等方法了,注解后在编译时会自动加进去。

3.2 @AllArgsConstructor

使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数

3.3 @NoArgsConstructor

使用后创建一个无参构造函数

3.4 @Builder

关于Builder较为复杂一些,Builder的作用之一是为了解决在某个类有很多构造函数的情况,也省去写很多构造函数的麻烦,在设计模式中的思想是:用一个内部类去实例化一个对象,避免一个类出现过多构造函数。

案例一:

@Builder
public class User {
    private String username;
    private String password;
}

编译后:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.ttbank.flep.core.test;

public class User {
    private String username;
    private String password;

    User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public static User.UserBuilder builder() {
        return new User.UserBuilder();
    }

    public static class UserBuilder {
        private String username;
        private String password;

        UserBuilder() {
        }

        public User.UserBuilder username(String username) {
            this.username = username;
            return this;
        }

        public User.UserBuilder password(String password) {
            this.password = password;
            return this;
        }

        public User build() {
            return new User(this.username, this.password);
        }

        public String toString() {
            return "User.UserBuilder(username=" + this.username + ", password=" + this.password + ")";
        }
    }
}

实际使用:

package com.ttbank.flep.core.test;

/**
 * @Author lucky
 * @Date 2022/7/7 20:37
 */
public class UserTest {
    public static void main(String[] args) {
        User user = User.builder().username("lucky").password("123456").build();
        System.out.println(user.toString());
    }
}

debug模式:

案例二:

package com.ttbank.flep.file.entity;

import lombok.*;
import lombok.experimental.Accessors;

import java.io.Serializable;

@Data  //生成getter,setter等函数
@Builder
@NoArgsConstructor //生成无参构造函数
@AllArgsConstructor //生成全参数构造函数
public class User implements Serializable {
    private Integer id;
    private String name;
    private String disc;

}

效果图:

此时,测试类中可以使用全参构造方法。

在刚开始使用Lombok的时候建议大家可以多看看class文件,来加深对你所需要使用注解的理解。

参考文献:

https://www.jianshu.com/p/3ce2f0a39df4

https://blog.csdn.net/ChenXvYuan_001/article/details/84961992

 

posted @ 2021-08-24 10:41  雨后观山色  阅读(368)  评论(0编辑  收藏  举报