lombok

1、lombok使用前准备

1.1 Eclpise使用lombok

1.1.1 pom导入

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

导入以后,lombok的使用和其它jar不一样,lombok是需要下载jar并且安装,否则注解没报错,但是不生效,其实它的注解没有生成相应的方法.所以得安装才有用。

1.1.2 lombok的安装

1.1.2.1 首先找到maven仓库,然后找到jar包

在这里插入图片描述

1.1.2.2 cmd命令打开jar包

我这里是把上面找到的jar包弄到了eclipse目录下,然后cmd运行它
在这里插入图片描述
运行后会出现如下所示,让你选择要安装插件的工具,我这里选择安装eclipse
在这里插入图片描述

1.1.2.3 查看eclipse.ini

查看eclipse的ini文件在这里插入图片描述
按理说会自动生成如下所示
在这里插入图片描述
如果没有生成,或者这个jar包的位置不对,就自己写一下jar的路径,我的路径不对,只显示了jar的名称,不知道有没有效果,反正就按照网上找的,自己写了路径,不影响用起来一样的效果,不用纠结,弄好了重启一下eclipse

1.2 IDEA使用lombok

1.2.1 pom引入

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

1.2.2 安装插件

在这里插入图片描述
使用的时候右下角会提示启用lombok,点enable就可以了

2、注解

2.1 @Data

  注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法

2.2 @Setter

  注解在属性上;为属性提供 setting 方法

2.3 @Getter

  注解在属性上;为属性提供 getting 方法

2.4 @Log4j

  注解在类上;为类提供一个 属性名为log 的 log4j 日志对象

2.5 @NoArgsConstructor

  注解在类上;为类提供一个无参的构造方法

2.6 @AllArgsConstructor

  注解在类上;为类提供一个全参的构造方法

2.7 @Accessors

  存取器,用于配置getter和setter方法的生成结果

2.7.1 @Accessors的fluent属性

  boolean值,设置为true,则getter和setter方法的方法名都和属性名一样,且setter方法返回当前对象。

@Data
@Accessors(fluent = true)
public class Dept implements Serializable {
	
	private Long deptno; 
	private String dname; 
	
	//使用了fluent = true,相当于如下效果
	//deptno的get方法
    //public Long deptno() {}
    //deptno的set方法
    //public Dept deptno(Long deptno) {}
    //dname的get方法
    //public String dname() {}
    //dname的set方法
    //public Dept dname(String dname) {}
	
}

2.7.2 @Accessors的chain属性

  链式的,boolean值,设置为true,则setter方法返回当前对象

@Data
@Accessors(chain = true)
public class Dept implements Serializable {
	
	private Long deptno; 
	private String dname; 
	
	//使用了chain = true,相当于如下效果
    //deptno的set方法
    //public Dept deptno(Long deptno) {}
    //dname的set方法
    //public Dept dname(String dname) {}
	
}

2.7.3 @Accessors的prefix属性

  用于生成getter和setter方法,但是prefix会忽视指定的前缀。

@Data
@Accessors(prefix = "d")
public class Dept implements Serializable {
	
	private Long dno; 
	private String dname; 
	
	//使用了prefix = "d",相当于如下效果
    //dno的get方法
    //public Dept getNo() {}
    //dno的set方法
    //public void setNo(Long dno) {}
    //dname的get方法
    //public Dept getName() {}
    //dname的set方法
    //public void setName(String dname) {}
	
}

2.8 @SuppressWarnings

  抑制警告的关键字

2.9 @Builder

为类生成相对略微复杂的构建器 API

  • 它作用于类,将其变成建造者模式
  • 可以以链的形式调用
    User user = User.builder().id("123").name("John").build();
    
  • 初始化实例对象生成的对象是不可以变的,可以在创建对象的时候进行赋值
  • 如果需要在原来的基础上修改可以加 set 方法,final 字段可以不需要初始化

2.9.1 它会生成一个全参的构造函数,但是没有无参构造函数,如果再使用@NoArgsConstructor或者手写无参构造函数就会报错

在这里插入图片描述

解决方法:
第一种:
三个注解同时使用@Builder、@NoArgsConstructor、@AllArgsConstructor

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String id;
    private String name;

}

第二种
手写构造函数,然后使用@Tolerate

@Data
@Builder
public class User {
    private String id;
    private String name;

    @Tolerate
    public User() {
    }
}

2.10 @RequiredArgsConstructor

@RequiredArgsConstructor作用在类上,代替@Autowired书写,自动生成了一个构造函数,该构造函数将带有final或@NonNull注解的参数作为参数,并将其赋值给对应的成员变量。

@RestController
public class TestController{
	
	@Autowired
    private UserService userVice;

}

等同于

@RequiredArgsConstructor
@RestController
public class TestController{

    private final UserService userVice;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值