Java优雅编码之Lombok

一、概述

1. 官网介绍
Project Lombok官网介绍

大概的意思:Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量。

2. 使用
  Lombok 通过提供简单的语法注解形式来帮助简化消除一些必须有但显得很臃肿的Java 代码,典型的是对于 POJO对象的简化(如自动帮我们生成Setter和Getter等),有了Lombok的加持,开发人员可以免去很多重复且臃肿的操作,极大地提高java代码的信噪比,因此我们必须尝试并应用起来!


二、Lombok安装(IntelliJ idea)

  • 进入IntelliJ idea Plugins界面;

  • 然后搜索并安装Lombok插件;
    idea Plugins搜索安装 lombok

  • 开启注解生成器Annotation Processors的Enable选项;
    勾选Enable annotation processing

  • 最后需要重启idea生效

idea中设置完成后需要在项目的pom.xml中添加如下所示的lombok依赖才能使用

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

三、Lombok简单使用

不使用lombok和使用lombok
编译源文件,然后反编译class文件,可以发现@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。


四、Lombok主要注解

  • @Getter and @Setter:自动为属性提供 Set和Get 方法;
  • @ToString:该注解的作用是为类自动生成toString()方法;
  • @EqualsAndHashCode:为对象字段自动生成hashCode和equals实现;
  • @AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor:顾名思义,为类自动生成对应参数的constructor;
  • @Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog:自动为类添加对应的log支持;
  • @Data:自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter,为非final字段添加@Setter和@RequiredArgsConstructor,本质上相当于几个注解的综合效果;
  • @NonNull:自动帮助我们避免空指针。作用在方法参数上的注解,用于自动生成空值参数检查;
  • @Cleanup:自动帮我们调用close()方法。作用在局部变量上,在作用域结束时会自动调用close方法释放资源;

五、@Log注解实战

普通 Spring Boot日志框架项目中,使用Log4j2来作为日志对象,写法如下:

@RestController
@RequestMapping("/testlogging”)
public class LoggingTestController {

    private final Logger logger = LogManager.getLogger(this.getClass());

    @GetMapping("/hello”)
    public String hello() {
        for(int i=0;i<10_0000;i++){
            logger.info("info execute index method”);
            logger.warn("warn execute index method”);
            logger.error("error execute index method”);
        }
        return "My First SpringBoot Application”;
    }
}

若改用Lombok后,写法变得更加简洁,只需要引入对应的@Log注解即可完成log对象的生成:

@RestController
@RequestMapping("/testloggingwithlombok”)
@Log4j2
public class LoggingTestControllerLombok {

    @GetMapping("/hello”)
    public String hello() {
        for(int i=0;i<10_0000;i++){
            log.info("info execute index method”);
            log.warn("warn execute index method”);
            log.error("error execute index method”);
        }
        return "My First SpringBoot Application”;
    }
}

六、Lombok的优缺点

优点:

  • 能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,提高了一定的开发效率;
  • 让代码变得简洁,不用过多的去关注相应的方法;
  • 属性做修改时,也简化了维护这些属性所生成的getter/setter方法等。

缺点:

  • 不支持多种参数构造器的重载;
  • 虽然省去了手动创建getter/setter方法的麻烦,但大大降低了源代码的可读性和完整性,降低了阅读源代码的舒适度。

Tips

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章