欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Lombok的使用

程序员文章站 2022-06-27 21:43:13
Lombok简介 在Java项目中,我们要写很多杂七杂八的代码,比如 pojo的getter、setter、toString方法 异常处理 I/O流的关闭操作 等等,没有技术含量,还占据很多行,Lombok就是为解决此问题而开发的。 比如在一个pojo类中写一大把getter、setter方法,又臭 ......

 

lombok简介

在java项目中,我们要写很多杂七杂八的代码,比如

  • pojo的getter、setter、tostring方法
  • 异常处理
  • i/o流的关闭操作

等等,没有技术含量,还占据很多行,lombok就是为解决此问题而开发的。

 

比如在一个pojo类中写一大把getter、setter方法,又臭又长,一直滑滚轮。

使用lombok:在类上直接标注个@getter、@setter,自动生成getter、setter方法,且不显示出来、不占据空间。



 
 
 

准备工作

1、idea安装插件lombok
 
2、项目中添加lombok的依赖
        <dependency>
            <groupid>org.projectlombok</groupid>
            <artifactid>lombok</artifactid>
            <version>1.18.12</version>
            <scope>provided</scope>
        </dependency>

添加依赖才能使用lombok的注解,编译时idea会自动调用lombok插件来向生成的.class文件中添加指定的方法。

idea安装了lombok插件,写代码时才会有lombok生成的方法的提示,编译时才会往.class文件中添加相关方法。

 

 

 

 

lombok常用注解

1、@getter|@setter   生成getter|setter方法

可以标注在类上、成员变量上,标注在类上时会给所有成员变量生成getter|setter方法,标注在成员变量上时是给该成员变量实现对应的getter|setter方法。

注意:只对实例成员变量有效(只生成实例成员变量的getter|setter方法),对static成员变量无效。

标注在成员变量上时,下面3种写法都可以:

    @getter
    @setter
    private string username;
    
    @getter @setter
    private string username;

    @getter @setter private string username;

标注在成员变量上的注解都可以这么写,后续不再说明。

 

 

@tostring  重写tostring()

标注在类上。

默认包含全部属性,可用of指定要包含哪些属性、exclude排除哪些属性。

@tostring(of = {"id","username"})   //值都是string[]的形式

@tostring(exclude = {"id","username"})

 

 


@equalsandhashcode  重写hashcode()、equals()

标注在类上。

重写的效果和我们给pojo类重写hashcode()、equals()的效果是一样的,根据内容来判断是否equals,不是根据地址。

 

 

 

@noargsconstructor|@allargsconstructor  生成无参、全参的构造方法

标注在类上。

生成的全参构造方法,参数表是不包含static成员变量的。

 

 

 

@requiredargsconstructor 

标注在类上。

生成只包含final修饰或@nonnull标注的成员变量的构造方法。

 

 

@data

标注在类上。

相当于以下注解的集合:@getter 、@setter、@tostring、@equalsandhashcode 、 @requiredargsconstructor

 

 

 

@sneakythrows  自动捕捉并抛出异常

标注在方法上。

相当于在方法上声明throws exception。

 

 

 

@cleanup   自动关闭资源

标注在变量上。

只对实现了java.io.closeable接口的对象有效,比如io流、数据库连接。

@cleanup往往需要和@sneakythrows搭配使用,因为io流、连接基本都要抛出异常,“文件未找到异常”、“无法连接异常”等等,单独使用@cleanup很多时候都通不过编译。

    @sneakythrows
    public void test() {
        @cleanup inputstream inputstream = new fileinputstream("1.txt");
        //....
    }

 

 

 

@logxxx

标注在类上,生成此类对应的static类型的logger对象。

针对不同的日志实现产品,有不同的注解。直接输入@log选择即可,比如log4j的:

@log4j
public class user {
    
}
public class user {
    private static final logger log = logger.getlogger(user.class);
}

static类型,当前类的logger对象。