Lombok介绍--简化开发

1.Lombok是什么?

lombok官方是这么解释的:Project Lombok是一个java库,可以自动插入编辑器和构建工具,为java增添趣味。永远不要再编写一个getter或equals方法,使用一个注释,您的类就有了一个功能齐全的构建器,自动化了您的日志变量,等等。

可以使用lombok的相关注解,让我们不再显示的的为一个类编写setter,getter,toString等方法,因为这些方法除了变量名不同,并没有其他不同。作为工具的最终目标,lombok合理的使用可以简化开发。

例如:

public class Test {
    @Setter
    @Getter
    private Integer a;
}

等同于

public class Test {
    private Integer a;

    public Integer getA() {
        return a;
    }

    public void setA(Integer a) {
        this.a = a;
    }
    
}

2.引入依赖

maven-lombok的各个版本

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.22</version>
    <scope>provided</scope>
</dependency>

3.lombok常用注解

Lombok采用注解的方式,在编译后会自动生成注解相对应的方法

常用注解:

1. @setter/@getter

作用在属性,类

为属性提供set/get方法

2. @ToString

作用在类上

为类自动生成toString()方法

3. @Data

作用在类上

会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法

4. @AllArgsConstructor

作用在类

为类生成全参数的构造方法

5. @NoArgsConstructor

作用在类

为类生成无参构造方法

6. @NonNull

作用在属性,方法,方法参数,方法中的本地变量(局部变量)

会分别校验属性,方法的全部参数,方法参数,方法本地变量是否为空

7. @Cleanup

作用在方法中的本地变量(局部变量)

作用在资源变量中,会自动调用其close方法关闭资源。

例如:

try {
     @Cleanup
     InputStream intput = new FileInputStream("file");
     }
     catch (Exception e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
}

等同于

InputStream intput = null;            
try {
    intput = new FileInputStream("file");
    } catch (IOException e) {
    e.printStackTrace();
    }finally {
        try {
            intput.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

8. @Log4j

作用在类上

为该类创建一个日志记录对象log,使用类org.apache.log4j.Logger

例如:

@Log4j
public class Test {
    public static void main(String[] args) {
        log.info("logger....");
    }
}

9. @SneakyThrows

作用在方法,构造函数

暗中抛出异常,当我们需要抛出异常,在当前方法上调用,不用显示的在方法名后面写 throw

例如:

@SneakyThrows(value=NullPointerException.class)
public void test() {
    throw new NullPointerException();
}

10. @RequiredArgsConstructor

作用在类上

为类生成所有带有final或者@Nonnull注解属性的构造方法

例如:

@RequiredArgsConstructor
public class Test {
    @NonNull
    private int a;

    final String B;
    
    private int c;
     
}

等同于

public class Test {
    @NonNull
    private int a;

    final String B;
    
    private int c;
    
    Test(int a,String B){
        this.a = a;
        this.B = B;
    }
}

11. @Synchronized

作用在方法上

与synchronized作用一样,默认静态方法使用的是全局锁,普通方法使用的是对象锁,可以指定锁的对象。

例如:

public class Test {

    @Synchronized
    public void test() {
        System.out.println(".....");
    }
}

等同于

public class Test {

    public void test() {
        synchronized (this) {
            System.out.println(".....");
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章