springboot2.0 lombok使用

1. springboot 已经默认管理了lombok的版本,只需引入即可
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <scope>provided</scope>
</dependency>
2. 要想让IDE在编译阶段识别lombok的注解,需要安装一下lombok

Lombok的官方地址: https://projectlombok.org/
下载地址:https://projectlombok.org/download.html

下载完lombok.jar后,双击运行,或者在cmd命令行输入: java -jar lombok.jar 运行
这里写图片描述

选择完IDEs,点击Install / Update按钮即可,安装成功界面:
这里写图片描述

打开我们STS的配置文件STS.ini检查一下lombok的配置,我的目录是D:\Program Files (x86)\sts-bundle\sts-3.8.3.RELEASE\STS.ini
这里写图片描述

这个时候,如果我们去启动STS的话,会发现启动不了,什么问题呢
因为我们的lombok目录中有(x86),导致其路径识别不了

由于安装lombok的时候,其已经把lombok.jar拷贝到了和STS.exe同目录下
这里写图片描述
所以我们可以把

-javaagent:D:\Program Files \(x86\)\sts-bundle\sts-3.8.3.RELEASE\lombok.jar

改为

-javaagent:lombok.jar

保存即可。

然后在启动STS,已经可以顺利启动。

3. 使用lombok

lombok提供的注解:

  • @Getter: 自动生成Getter方法
  • @Setter: 自动生成Setter
  • @ToString: 覆盖tostring方法
  • @EqualsAndHashCode: 覆盖equal和hashCode方法
  • @Data: 等价于@Getter + @Setter + @ToString + @EqualAndHashCode + @RequiredArgsConstructor等组合
  • @Slf4j: 默认使用slf4j的日志对象,直接用log对象写日志即可
  • @AllArgsConstructor:会生成一个包含所有变量,同时如果变量使用了NotNull annotation , 会进行是否为空的校验
  • @NoArgsConstructor:生成一个无参数的构造方法
  • @RequiredArgsConstructor:会生成一个包含常量,和标识了NotNull的变量 的构造方法。生成的构造方法是private,如何想要对外提供使用可以使用staticName选项生成一个static方法

@NoArgsConstructor/@RequiredArgsConstructor /@AllArgsConstructor

这三个注解都是用在类上的,第一个和第三个都很好理解,就是为该类产生无参的构造方法和包含所有参数的构造方法,
第二个注解则使用类中所有带有@NonNull注解的或者带有final修饰的成员变量生成对应的构造方法,当然,和前面几个注解一样,成员变量都是非静态的,
另外,如果类中含有final修饰的成员变量,是无法使用@NoArgsConstructor注解的。

三个注解都可以指定生成的构造方法的访问权限,同时,第二个注解还可以用@RequiredArgsConstructor(staticName=”methodName”)的形式生成一个指定名称的静态方法,返回一个调用相应的构造方法产生的对象,下面来看一个生动鲜活的例子

@RequiredArgsConstructor(staticName = "sunsfan")
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@NoArgsConstructor
public class Shape {
    private int x;
    @NonNull
    private double y;
    @NonNull
    private String name;
}

实际效果相当于:

public class Shape {
    private int x;
    private double y;
    private String name;

    public Shape(){
    }

    protected Shape(int x,double y,String name){
        this.x = x;
        this.y = y;
        this.name = name;
    }

    public Shape(double y,String name){
        this.y = y;
        this.name = name;
    }

    public static Shape sunsfan(double y,String name){
        return new Shape(y,name);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值