Lombok介绍
- Lombok作用
1.简化JavaBean开发,可以使用Lombok的注解让代码更加简洁
2.Java项目中,很多没有技术含量又必须存在的代码:POJO的getter/setter/toString;异常处理;I/O流的关闭操作等等,这些代码既没有技术含量,又影响着代码的美观,Lombok应运而生
- SpringBoot和IDEA官方支持
1.IDEA2020已经内置了Lombok插件
- 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。
- 默认使用版本仲裁,不设置版本号
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok<artifactId>
</dependency>
在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等
但是不能使用其扩展功能,比如日志输出等,所以我们还是安装一下,也比较简单
扩展注解。日志输出
@Slf4j 放在属性上面。
普通方式输出:使用log.info("furn-"+furn) 进行输出
占位符方式输出:使用log.info("furn={} myfurn={}",furn,furn) 进行输出。类似C语言
版权归原作者 stein_java 所有, 如有侵权,请联系我们删除。