• Lombok的使用


    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对象。

     
  • 相关阅读:
    解决ios下的微信页面背景音乐无法自动播放问题
    vue Vue-cli 笔记
    document.documentElement和document.body区别介绍
    GD库使用小结---2
    GD库使用小结---1
    踩到两只“bug”
    CI加载流程小结
    文件加载---理解一个project的第一步
    缓存的使用
    小小的分页
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/12684650.html
Copyright © 2020-2023  润新知