一文搞懂:如何高效使用Lombok

lombok是一个简化开发的一个包,先引入maven依赖

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

一、使用场景:创建标准javabean

在传统针对一个实体类写javabean,需要写对应的get ,set,和构造器,toString hashcode等,很繁琐以及不方便阅读,如果没有特殊需求,则可以使用lombok提供的注解,来完成 标准 javabean的生成

package com.dongmianmao.pojo;  
  
import lombok.AllArgsConstructor;  
import lombok.Data;  
import lombok.NoArgsConstructor;  
  
import java.sql.Date;  
  
@Data  // 创建对应的get set 和重写 toString equal 等方法
@NoArgsConstructor  // 创建空参构造
@AllArgsConstructor  // 创建带参构造
public class User {  
    private Integer id;  
    private String username;  
    private Date birthday;  
    private String sex;  
    private String address;  
}

可以看到,在类名上引用了三个注解,就完成了标准javabean的创建

二、使用场景:logback中logger对象频繁创建的繁琐

在引入日志框架logback后,需要频繁的创建logger对象,来获得日志框架对象,在引入lombok后,就可以省略频繁创建的繁琐,更高效的使用日志记录框架,前提:引入logback框架所需的依赖以及xml配置

import lombok.extern.slf4j.Slf4j;  
import org.junit.Test;  
  
@Slf4j 
public class JsonTest {  
    @Test  
    public void slf4jTest(){  
        log.info("这是用lombok注解记录的一条info日志");  
    }  
}
  • 使用 @Slf4j,来创建logger对象
  • 注解创建的对象名为 log 使用这个对象名就可以使用logback的功能了,省去了创建对象的操作

三、使用场景:频繁使用 类名.close() 来关闭资源,或者使用 try - wish - catch的方式来关闭资源

@Test  
public void testAddUser(){  
    String resource = "mybatis-config.xml";  
    InputStream is = this.getClass().getClassLoader().getResourceAsStream(resource);  
    SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);  
    @Cleanup  // 使用这个注解来关闭资源
    SqlSession sqlSession = ssf.openSession();  
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);  
    System.out.println(mapper.addUser(new User(null, "小红", new Date(System.currentTimeMillis()), "女", " 花果山水帘洞")));  
    sqlSession.commit();  
}

在需要关闭资源的Object上使用 @CleanUp 来关闭资源

四、使用场景:方法参数非空

// 简化
public void getName(@NotNull int num){
	System.out.print(num);
}

// 未简化
public void getNume(int num){
	if(num == null) throws new NullPointerException();
	System.out.print(num);
}

使用 @NotNull 注解,来指定参数不能为空

五、使用场景:自动寻找类型的变量和常量

在lombok中,定义了两个属性,来简化对象类型的书写

@Test
public static void test(){
	var name = "张三";
	val birthday = "2005-10-12";
}
  • var -> 用来定义变量,来自动寻找类型给变量赋上
  • val -> 用来定义常量,来自动寻找类型给常量赋上

六、使用场景:链式创建对象

先有一个对象类,为user,这里设以及存在对应的构造,get和set方法

@Data  
@NoArgsConstructor 
@AllArgsConstructor 
public class User {  
    private Integer id;  
    private String username;  
}

在以往创建对象

User user = new User(1,"张三");
// 或者
User user = new User();
user.setId(1);
user.setName("张三");

而如果使用lombok自带的注解后,先改造一下对象,是在对象这加注解

@Data  
@Builder
public class User {  
    private Integer id;  
    private String username;  
}

在类头顶加上 ==@Builder ==注解,此时创建对象就变成了

Student.builder()  
        .id(12)  
        .username("zhangsan");  

使用 类名.builder() 的方式来创建对象,而后面使用 .成员变量 的方式赋值,称为链式调用创建对象

七、使用场景:委托方法给当前类

关于这个,像是代理,把当前引用注解的类作为被代理类,然后把当前类变成代理类,来使用被代理类的方法

public class JsonTest {  
    @Delegate  
    List list = new ArrayList();  
  
    @Test  
    public void jsonTest(){  
        JsonTest jsonTest = new JsonTest();  
        jsonTest.add(123);  
        System.out.println(jsonTest);  
    }  
}

运行上面代码,可以让jsonTest这个类,能够使用ArrayList的方法
使用 @Delegate 注解 ,把写在成员变量的对象,代理给当前类,让当前类能够使用被代理类的功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值