前言

Lombok 是一种 Java? 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。

正文

添加依赖

在 pom.xml 文件中添加相关依赖:

<lombok.version>1.16.20</lombok.version><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version><scope>provided</scope></dependency>

安装插件

由于 Lombok 采取的注解形式的,在编译后,自动生成相应的方法,为了不让 ide 疯了,需要下载插件了支持它。
以 idea 为例:查找插件 lombok plugin 安装即可。

用我的 User 实体类为例(set,get,toString 方法),

@Getter
@Setter
@ToString
public class SysUserEntity implements Serializable

在按快捷键 Ctrl + F12,可以查找到set,get,toString 方法。

注解

写点常用的,其余的 api 的打开 Jar 包一目了然

@Getter
@Setter
@ToString
@EqualsAndHashCode
构造函数
@AllArgsConstructor

会生成一个包含所有变量,同时如果变量使用了NotNull annotation , 会进行是否为空的校验,
全部参数的构造函数的自动生成,该注解的作用域也是只有在实体类上,参数的顺序与属性定义的顺序一致。

@NoArgsConstructor

无参构造函数

@RequiredArgsConstructor

会生成一个包含常量(final),和标识了@NotNull的变量 的构造方法。

怎么使用

它们都有三个参数可以设置

1.String staticName() default "";

如果设置了它,将原来的构造方法的访问修饰符将会变成 私有的,而外添加一个静态构造方法,参数相同,名字是设置的字符串的名字,访问修饰符为公有的。

  1. AnyAnnotation[] onConstructor() default {};
    在构造方法上添加注解。使用方法@RequiredArgsConstructor(onConstructor=@__({@AnnotationsGoHere}))}

    例如我们在 Spring 项目中需要注入多个值,写很多个 @Autowired 很麻烦,就可以使用这种方式:

    @Service
    @RequiredArgsConstructor(onConstructor = @__(@Autowired))
    public class UserServiceImpl implements IUserService {private final IUserRepository userRepository;private final IOrderRepository orderRepository;………………
    
  2. AccessLevel access() default lombok.AccessLevel.PUBLIC;
    构造函数访问修饰符;

  3. @NoArgsConstructor无参构造函数中还有个注解 boolean force() default false;
    作者的注释是 If {@code true}, initializes all final fields to 0 / null / false. Otherwise, a compile time error occurs.

    设置为 true 的时候,初始化所有的参数为默认值,否则编译错误。

@Data

我自己尝试了下,我们使用 @Data 注解就可以有下面几个注解的功能: @ToString@Getter@Setter@EqualsAndHashCode@NoArgsConstructor

注意的是,同时使用@Data@AllArgsConstructor 后 ,默认的无参构造函数失效,如果需要它,要重新设置 @NoArgsConstructor

@Slf4j
//类上面注解了,直接调用 log 即可:
log.info(xxxx);
@Log

使用的是 java.util.logging.Logger ,直接使用 变量 log

@Builder

bulder 模式构建对象。

@Cleanup
@Cleanup
InputStream in = new FileInputStream(args[0]);
@Cleanup
OutputStream out = new FileOutputStream(args[1]);

自动化关闭流,相当于 jdk1.7 种的 try with resource

val

类型推导。

 val example = new ArrayList<String>();example.add("Hello, World!");

对应的转换后代码就是:

 val example = new ArrayList<String>();example.add("Hello, World!");
@NonNull
public NonNullExample(@NonNull Person person) {this.name = person.getName();}

转换后就是:

public NonNullExample(@NonNull Person person) {if (person == null) {throw new NullPointerException("person");}this.name = person.getName();}
@SneakyThrows

翻译就是暗中抛出异常

当我们需要抛出异常,在当前方法上调用,不用显示的在方法名后面写 throw

@SneakyThrows(Exception.class)
@Synchronized

方法中所有的代码都加入到一个代码块中,默认静态方法使用的是全局锁,普通方法使用的是对象锁,当然也可以指定锁的对象。

private final Object lock = new Object();
@Synchronized("lock")
public void foo() {// Do something
}

个人认为这样的阅读起来比较麻烦,实际开发中往往将 synchronized 颗粒化到代码块中。

学习Spring Boot:(十五)使用Lombok来优雅的编码相关推荐

  1. Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例

    <p>这篇文章介绍如何使用 Jpa 和 Thymeleaf 做一个增删改查的示例.</p> 先和大家聊聊我为什么喜欢写这种脚手架的项目,在我学习一门新技术的时候,总是想快速的搭 ...

  2. (转)Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例

    http://www.ityouknow.com/springboot/2017/09/23/spring-boot-jpa-thymeleaf-curd.html 这篇文章介绍如何使用 Jpa 和 ...

  3. spring boot(十五)spring boot+thymeleaf+jpa增删改查示例

    快速上手 配置文件 pom包配置 pom包里面添加jpa和thymeleaf的相关包引用 <dependency><groupId>org.springframework.bo ...

  4. 学习Spring Boot:(二十五)使用 Redis 实现数据缓存

    前言 由于 Ehcache 存在于单个 java 程序的进程中,无法满足多个程序分布式的情况,需要将多个服务器的缓存集中起来进行管理,需要一个缓存的寄存器,这里使用的是 Redis. 正文 当应用程序 ...

  5. 学习Spring Boot:(二十六)使用 RabbitMQ 消息队列

    前言 前面学习了 RabbitMQ 基础,现在主要记录下学习 Spring Boot 整合 RabbitMQ ,调用它的 API ,以及中间使用的相关功能的记录. 相关的可以去[我的博客/Rabbit ...

  6. Spring Boot(十四):spring boot整合shiro-登录认证和权限管理

    Spring Boot(十四):spring boot整合shiro-登录认证和权限管理 使用Spring Boot集成Apache Shiro.安全应该是互联网公司的一道生命线,几乎任何的公司都会涉 ...

  7. quartz集成到springboot_一个用来学习 spring boot 的开源项目,总共包含 57 个集成demo...

    spring-boot-demo 一个用来学习 spring boot 的项目,总共包含 57 个集成demo. 包含集成 actuator(监控).admin(可视化监控).logback(日志). ...

  8. 2022 年学习 Spring Boot 开发的最佳书籍

    在我们之前的文章中,我们查看了学习 Java 编程的必读书籍我们在其中探索了一些您可以利用的资源来加快 Java 开发的速度.在此基础上,在用 vanilla Java 编写一段时间后,您将意识到组织 ...

  9. 在应用程序中使用虚拟内存——Windows核心编程学习手札之十五

    在应用程序中使用虚拟内存 --Windows核心编程学习手札之十五 Windows提供了3种进行内存管理的方法: 1)  虚拟内存,最适合用来管理大量对象或结构数组: 2)  内存映射文件,最适合用来 ...

  10. springboot 拦截器 日志_跟武哥一起学习Spring Boot,一份全面详细的学习教程

    SpringBoot现在已经是企业开发项目的标准框架,至少新项目一般都会使用SpringBoot框架,发现有一个SpringBoot的笔记写的非常好,非常全面, 也非常认真,即使你对SpringBoo ...

最新文章

  1. 2021阿里全球数学竞赛获奖名单出炉!北大获奖人数最多!
  2. Ubuntu xrdp 遠端桌面連線
  3. UML工具:EA(Enterprise Architect)
  4. qdir安装 多窗口资源管理软件
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的网上零食销售系统
  6. php如何读取excel合并单元格_PHP读取excel中合并的单元格的值
  7. 最擅长玩《毁灭战士》的AI开源了 | 来自CMU的论文代码
  8. 计算机专业英语缩略词
  9. 互联网产品经理的工作职责
  10. python用于cad_使用Python实现AutoCAD自动化
  11. 5-7 六度空间 (30分)
  12. HTML中的SEO优化
  13. oracle自动建立分区interval,使用Oracle 11g创建Interval分区表(转)
  14. 理解JDBC/JPA/Mybatis/Hibernate
  15. 网络营销培训:如何进行H5活动宣传?
  16. 3.14 我总结的一些小红书笔记发布频率技巧!【玩赚小红书】
  17. 利用临时文件恢复PowerPoint(PPT)文件
  18. 收藏一个快要消亡的技术古董
  19. ROS——roscpp
  20. python实现文档图像倾斜矫正,实现类似扫描仪功能

热门文章

  1. tensorflow学习笔记(1):sess.run()
  2. pip 安装模块时报“pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonh”
  3. python中对比数组长度_在Python中检索数组长度的首选方法
  4. c语言数组的声明和初始化_C声明和初始化能力问题和解答
  5. erwin模型导入mysql_使用erwin进行mysql建模
  6. html 图片上放置按钮,用CSS在图片上再加一个小按钮
  7. python将txt转为字符串_python做第一只小爬虫
  8. docker设置镜像加速器
  9. TTYL的完整形式是什么?
  10. EntityFramework进阶——数据变更冲突