一、Lombok介绍
1.1 Lombok是什么?
一个Java库,用于简化Java代码。
Lombok是一个非常神奇的 java 类库,会利用注解自动生成 java Bean 中烦人的 Getter、Setting,还能自动生成 logger、ToString、HashCode、Builder 等 java特色的函数或是符合设计模式的函数,能够让你 java Bean 更简洁,更美观。实体类中的get/set/构造/toString/hashCode等方法,都不需要我们再手动写了。
1、lombok是一种java类库
2、Java Bean神器,用在java开发中
3、利用了注解,让你的代码更加简洁
1.2 Lombok诞生背景
以前的Java项目中,充斥着太多不友好的代码:POJO的getter/setter/toString;异常处理;I/O流的关闭操作等等,这些样板代码既没有技术含量,又影响着代码的美观,Lombok应运而生。
Lombok 简化臃肿代码插件
1.3 为什么推荐使用Lombok?
@Lombok有啥牛皮的?SpringBoot和IDEA官方都要支持它!
最近IDEA 2020最后一个版本发布了,已经内置了Lombok插件,SpringBoot 2.1.x之后的版本也在Starter中内置了Lombok依赖。
1.4 Lombok插件
IDEA中的插件哦,非常方便
二、@SneakyThrows的介绍
2.1 何为SneakyThrows?
从字面理解就是“偷偷摸摸的抛出”。对的,就是这个意思。
该注解属于Lombok,它的作用为减少程序的异常捕获。
直接在方法上面加上@SneakyThrows即可
2.2 @SneakyThrows原理:
@SneakyThrows直接把捕获异常的代码嵌入到了class文件里。也就是说,并不是我们忽略了异常,而是类似于Lombok的@Data注解,在编译时就已经把处理的代码嵌入到了class内。当然,我们也可以自定义需要@SneakyThrows处理的异常,比如例子中,我只需要他帮我处理Thread.sleep的异常,关于Class.forName的异常我需要额外做处理。可以这么做:
2.3 介绍地址
https://www.cnblogs.com/acmaner/p/13967688.html
https://www.jianshu.com/p/f1cc67513aee
三、@AllArgsConstructor的介绍
@NoArgsConstructor, 用于生成无参构造器
@RequiredArgsConstructor, 用于生成有参构造器
@AllArgsConstructor: 用于生成全参构造器
3.1 @AllArgsConstructor是什么?
它是lombok中的注解
作用在类上
使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数
会将类的每一个final字段或者non-null字段生成一个构造方法
3.2 @AllArgsConstructor注解作用
@AllArgsConstructor和final 代替 @Autowired
疑问:
如何使用@AllArgsConstructor和final 代替 @Autowired
结论:
@AllArgsConstructor和final 代替 @Autowired
Springboot官方建议使用final来修饰成员变量,然后通过构造方法来进行注入
原因:
final修饰的成员变量是不能够被修改的,反射那就没办法了
四、@Data、@Setter、@Getter的介绍
@Data、@Setter、@Getter是Lombok库中的注解。
如果有考核单元测试的项目,不建议使用,因为它不好写单元测试哦~
4.1 @Data注解
是一个组合注解,包含了@ToString、@EqualsAndHashCode、@Getter和@Setter等注解。使用@Data注解可以省略生成getter和setter方法、toString方法、hashCode方法和equals方法的样板代码。
4.2 @Setter
@Setter注解用于生成setter方法,通过使用@Setter注解可以省略生成setter方法的样板代码。
4.3 @Getter
@Getter注解用于生成getter方法,通过使用@Getter注解可以省略生成getter方法的样板代码
五、@Builder
@Builder: 用于生成Builder模式的类。
六、@Synchronized
@Synchronized: 用于生成同步方法。
七、@Log
@Log: 用于生成日志记录的字段。
@EqualsAndHashCode: 用于生成equals和hashCode方法。
@ToString: 用于生成toString方法。