springboot中使用lombok

Lombok介绍

  • Lombok作用

1.简化JavaBean开发,可以使用Lombok的注解让代码更加简洁

2.Java项目中,很多没有技术含量又必须存在的代码:POJO的getter/setter/toString;异常处理;I/O流的关闭操作等等,这些代码既没有技术含量,又影响着代码的美观,Lombok应运而生

  • SpringBoot和IDEA官方支持

1.IDEA2020已经内置了Lombok插件

  1. SpringBoot2.1.x之后的版本也在Starter中内置了Lombok依赖

常用注解

@Data注解在类上;提供类所有属性的getting和setting方法,此外还提供了equals、canEqual、hashCode、toString方法

@Setter:注解在属性上;为属性提供setting方法

@Gettter注解在属性上:为属性提供getting方法

@Log4j:在注解类上;为类提供一个属性名为log的 log4j日志对象

@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法

@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法

@Cleanup:可以关闭流

@Builder:被注解的类加个构造者模式

@Synchronized:加个同步锁

@SneakyThrows:等同于try/catch捕获异常

@NonNull:如果给参数加个这个注解参数为null会抛出空指针异常

@Value:注解和@Data类似,区别在于它会把所有成员变量默认定义为private final修饰,并且不会生成set方法。

代码实践

pom.xml中引入lombok。

  • 默认使用版本仲裁,不设置版本号


    org.projectlombok
    lombok
  • 在POJO上使用的相关注解

  • @Data 等价使用了如下注解 @Setter @Getter @RequiredArgsConstructor @ToString @EqualAndHashCode

  • @RequiredArgsConstructor 说明:

在我们写controller或者Service层的时候,需要注入很多的mapper接口或者另外的service接口,这时候就会写很多的@Autowired注解,代码看起来很乱

lombok提供了一个注解:

@RequiredArgsConstructor(onConstructor =@_(@Autowired))

写在类上可以代替@Autowired注解,需要注意的是在注入时需要用fnal定义,或者使用@notnull注解

  • 两个容易踩坑的注解

  • @NoArgsConstructor 当默认的无参构造器被覆盖时,需要使用它来重写无参构造器

  • @AllArgsConstructor 全参构造器,会覆盖无参构造器,往往需要配合@NoArgsConstructor

IDEA中下载lombok插件

  • 不装插件也可以用基本的注解,比如@Data @Getter等

  • 但是不能使用其扩展功能,比如日志输出等,所以我们还是安装一下,也比较简单

springboot中使用lombok_第1张图片
  • 扩展注解。日志输出

  • @Slf4j 放在属性上面。

  • 普通方式输出:使用log.info("furn-"+furn) 进行输出

  • 占位符方式输出:使用log.info("furn={} myfurn={}",furn,furn) 进行输出。类似C语言

你可能感兴趣的:(SpringBoot,spring)