<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.misu</groupId>
<artifactId>springboot-lombok</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot-lombok</name>
<description>SpringBoot整合Lombok</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
步骤3:User实体类,使用了Lombok的注解
package com.misu.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Tiramisu
* @version 1.0.0
* @since 2021/10/22 15:38
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String name;
private String password;
}
步骤4:Controller
package com.misu.controller;
import com.misu.entity.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author qinjie
* @version 1.0.0
* @since 2021/10/22 15:42
**/
@RestController
@RequestMapping("/user")
@Slf4j // Lombok注解,可用于打印日志
public class UserController {
@GetMapping("/get")
public User getUser() {
User user = new User();
user.setId(1);
user.setName("Tiramisu");
user.setPassword("123456");
log.info(user.toString());
return user;
}
}
步骤5:地址栏输入http://localhost:8080/user/get,如图: 从上图可以看出,User实体类中没有写相应的setter和getter方法,但是在UserController中我们却可以使用User实体类的setter方法。这就是Lombok的魅力所在:通过使用Lombok的注解,我们可以消除那些必须写但是重复的代码,使我们的代码更加简洁、优雅。 Tips: User实体类中之所以可以使用getter/setter方法,是因为Lombok在编译阶段就为User实体类生成了相应的getter/setter方法。
Lombok常用注解:
@Data 生成getter/setter/toString/equals/hashcode/不带参数的constructor等方法
@NonNull 让你不再担忧并且爱上NullPointerException
@CleanUp 自动资源管理,不用在finally中添加资源的close方法
@Setter/@Getter 生成set和get方法
@ToString 生成toString方法
@EqualsAndHashCode 从对象的字段中生成equals和hashcode的实现
@@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor 自动生成构造方法
@Value 用于注解final类
@Builder 产生复杂的构建器api类
@SneakyThrows 异常处理(谨慎使用)
@Synchronized 同步方法安全的转化
@Log 支持各种logger对象,使用时用对应的注解,如:@Slf4j
PS:项目源码地址:https://gitee.com/itira/spring-boot.git