Lombok在SpringBoot项目的中使用
SpringBoot结合Lombok整合对象
我们之前介绍MyBatis Plus,AOP实现日志接口以及Swagger-UI等文章中都是使用了Lombok,可能有些人不是很了解Lombok,下面我们来介绍一下Java中的Lombok库。
Lombok介绍
Lombok是一个用于简化Java开发的,他的作用是自动插入编辑器和构建工具。通过注解方式,实现getter、setter、eques以及tostring()等方法。
在Lombok中添加Maven依赖
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
IDEA安装Lombok插件
在IDEA中使用,还需要安装Lombok插件,安装如图所示:
本文以及安装过,如果没有安装,点击Install进行安装。注:可能出现的错,安装以后可能出现编译时出错的问题,如图勾选 Enable Annotation Processing
Lombok常用注解介绍
@Service public class MesAdminServiceImpl { @Autowired private JwtTokenUtil jwtTokenUtil; @Autowired private PasswordEncoder passwordEncoder; @Autowired private MesAdminLoginLogMapper loginLogMapper; @Autowired private MesAdminCacheService adminCacheService; @Autowired private MesAdminRoleRelationService adminRoleRelationService; @Autowired private MesRoleMapper roleMapper; @Autowired private MesResourceMapper resourceMapper; }
等同于:
@Service @AllArgsConstructor public class MesAdminServiceImpl { @Autowired private final JwtTokenUtil jwtTokenUtil; @Autowired private final PasswordEncoder passwordEncoder; @Autowired private final MesAdminLoginLogMapper loginLogMapper; @Autowired private final MesAdminCacheService adminCacheService; @Autowired private final MesAdminRoleRelationService adminRoleRelationService; @Autowired private final MesRoleMapper roleMapper; @Autowired private final MesResourceMapper resourceMapper; }
/** * Swagger自定义配置 * */ @Data @EqualsAndHashCode(callSuper = false) @Builder public class MesSwaggerProperties { /** * API文档生成基础路径 */ private String apiBasePackage; /** * 是否要启用登录认证 */ private boolean enableSecurity; /** * 文档标题 */ private String title; /** * 文档描述 */ private String description; /** * 文档版本 */ private String version; /** * 文档联系人姓名 */ private String contactName; /** * 文档联系人网址 */ private String contactUrl; /** * 文档联系人邮箱 */ private String contactEmail; }
builder基础使用:
MesSwaggerProperties.builder()
一般示例查看使用Lombok和不使用的区别
/** * 用户登录参数 * */ @Data @EqualsAndHashCode(callSuper = false) public class MyMesAdminLoginParam { @NotEmpty @ApiModelProperty(value = "用户名",required = true) private String username; @NotEmpty @ApiModelProperty(value = "密码",required = true) private String password; }
/** * 用户登录参数 * */ public class MyMesAdminLoginParam { @NotEmpty @ApiModelProperty(value = "用户名",required = true) private String username; @NotEmpty @ApiModelProperty(value = "密码",required = true) private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; MyMesAdminLoginParam that = (MyMesAdminLoginParam) o; return username.equals(that.username) && password.equals(that.password); } @Override public int hashCode() { return Objects.hash(username, password); } public MyMesAdminLoginParam(@NotEmpty String username, @NotEmpty String password) { this.username = username; this.password = password; } }
注: 编译源文件,然后反编译class文件,会发现@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,但是final属性,不会为该属性生成setter方法。
Lombok的优缺点
优点:
缺点:
总结:
今天主要讲解了我们在Swagger-UI,AOP实现接口日志、MyBatis Plus自动生成代码以及Reids实现缓存等模块中使用到的Lombok。
Github地址:
github地址:https://github.com/bangbangzhou/greemes/tree/master