Springboot+Lombok
一、快速开始
首先要开发IDE支持lombok
- Idea可以在setting–plugins里面搜索lombok即可
- Eclipse可以双击lombokjar包添加Eclipse.exe即可
添加依赖
- 注意scope是provided
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
<scope>provided</scope>
</dependency>
<!--lombok扩展包-->
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>lombok-ex</artifactId>
<version>0.1.0</version>
<scope>provided</scope>
</dependency>
二、@Data等JavaPOJO对象注解
- @Setter 注解字段,生成字段的setter方法
- @Getter 注解字段,生成字段的getter方法
- @EqualsAndHashCode 注解类,生成的类的equals方法和hashcode方法
- @ToString 注解类,生成类的toString方法
- @Data 注解类,生成getter方法和setter方法和toString,equals,hashCode方法
- @AllArgsConstructor 注解类,生成类的全参构造方法
- @NoArgsConstructor 注解类,生成类的无参构造方法
- @Builder 注解类,生成build内部类以及build方法
- @SuperBuilder 注解类,生成父类的内部类,以及build方法
- @Accessor 注解类,内部生成
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Accessor
public class User{
private Long id;
private String userName;
private Integer age;
}
三、lombok高级用法
1、业务类自动创建带参数构造方法
- 用处,业务类生成带参构造方法,避免延迟加载,省去了@Autowired或@Resource注解
- Idea等就不会出现告警
@Service
@RequiredArgsConstructor(staticName = "of")
public class UserServiceImpl{
private SchoolService schoolService;
private ClassInfoService classInfoService;
// ... 省略其他方法
}
2、@Cleanup IO资源关闭
- 自动生成try-catch-finally标准方式关闭IO资源
- @Cleanup 可以在最后自动关闭IO资源
public class CleanupExample {
public static void main(String[] args) throws IOException {
@Cleanup
InputStream in = new FileInputStream(args[0]);
@Cleanup
OutputStream out = new FileOutputStream(args[1]);
// 省略使用in 和 out参数
}
}
3、@Slf4j注解自动生成log对象
- @Log @Slf4j 注解类,内部生成log方法
- @SneakyThrows 注解方法,生成异常捕获的相关代码,需要注意异常的处理方式
- @UtilityClass 注解在工具类,生成私有构造方法
@Slf4j
public class Demo{
public void method(){
log.info("日志打印....");
}
}
4、@Synchronized 同步代码注解
- 底层自动生成synchroinzed代码块
public class SynchronizedExample {
private final Object readLock = new Object();
@Synchronized
public static void hello() {
System.out.println("world");
}
@Synchronized("readLock")
public void foo() {
System.out.println("bar");
}
}
5、@SneakyThrows自动捕获异常
- 自动生成异常捕获
public class SynchronizedExample {
@Synchronized
public static void hello() {
//
}
}
6、@StandardException
- 用于自定义异常,自动内联异常方法
@StandardException
public class ExampleException extends Exception {
// 自动生成标准异常处理参数
}
四、扩展包注解使用
1、@Serial 自动生成序列号
@Serial
public class User {
// 自动实现序列化,以及生成序列化
}
2、@ToString 使用FastJson序列化
@ToString //默认fastJson
public class ToStringTest {
}
@ToString(ToStringType.CONCAT) //可以采用拼接的方式
public class ToStringConcatTest {
}
3、@Sync 同步方法
public class SyncDemo{
@Sync
public void syncTest() {
System.out.println("sync");
}
}
4、@UnsupportedOperation 抛出不支持异常
public class UnsupportDemo{
@UnsupportedOperation
public static void add() {
// 如果调用不支持方法则抛出异常
}
}
5、@SPIAuto(“good”) 自动生成SPI
@SPIAuto("good")
public class SPIDemo implements Say{
@Override
public void say() {
System.out.println("good");
}
}
参考:
官网:https://projectlombok.org/features/all
https://github.com/houbb/lombok-ex