使用 Lombok 优雅编码
一、介绍和使用
Lombok 是一个 java 库,能以简单的注解形式来简化 java 代码,提高开发人员的开发效率。
常见使用在开发过程中需要写的 javabean,往往开发需要花时间去添加相应的 getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的 getter/setter 方法,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对应方法的失误,而这些都可以通过 Lombok 的注解去完成,而且!Lombok 的功能还不仅仅是这些。
1、pom.xml
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<scope>provided</scope>
</dependency>
2、插件安装
推荐安装 IDEA lombok plugin 插件,非必须,但是开发过程中看着一堆红色报错,还是略不爽呀~

二、注解说明
这里罗列一些常用的 Lombok 注解:
@Getter:自动生成所有属性的 getter 方法。
@Setter:自动生成所有属性的 setter 方法。
@ToString:自动生成 toString() 方法。
@EqualsAndHashCode:生成 equal() 和 hashCode() 方法。
@NoArgsConstructor:生成一个无参构造器。
@AllArgsConstructor:生成一个全参构造器。
@NonNull:为字段参数生成非空检查,避免 NullPointerException;
@RequiredArgsConstructor:为所有必填字段生成一个构造器。
@Cleanup:用在局部变量上,作为资源使用完成后的释放。比如 FileInputStream 这类的文件流,会在使用完成后调用 close() 方法。
@SneakyThrows:用在方法或者构造器上,抛出需要 throw 的异常。比如 @SneakyThrows(UnsupportedEncodingException.class)。
@Synchronized:用在方法上。相当于对方法使用了 synchronized 关键字。
@Data:神器,相当于同时使用了 @Getter、@Setter、@RequiredArgsConstructor、@ToString、@EqualsAndHashCode。
@Slf4j:用在类上,相当于写了 private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
完整的注解文档说明:https://projectlombok.org/features/all
@Data
@NoArgsConstructor
@AllArgsConstructor
@Slf4j
public class UserVO { private Long id; @NonNull
private String name; @NonNull
private String password; public void copyFile(String in, String out) throws IOException {
@Cleanup
FileInputStream inStream = new FileInputStream(in);
@Cleanup
FileOutputStream outStream = new FileOutputStream(out);
byte[] b = new byte[65536];
while (true) {
int r = inStream.read(b);
if (r == -1) break;
outStream.write(b, 0, r);
}
} @SneakyThrows(UnsupportedEncodingException.class)
public String utf8ToString(byte[] bytes) {
return new String(bytes, "UTF-8");
} }
使用 Lombok 优雅编码的更多相关文章
- 【开源】【前后端分离】【优雅编码】分享我工作中的一款MVC+EF+IoC+Layui前后端分离的框架——【NO.1】框架概述
写博客之前总想说点什么,但写的时候又忘了想说点什么,算了,不说了,还是来送福利吧. 今天是来分享我在平时工作中搭建的一套前后端分离的框架. 平时工作大多时候都是在做管理类型的软件开发,无非就是增.删. ...
- VSCode优雅编码
安装eslint 修改eslint配置 rules: { 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', ...
- Spring Boot笔记(五) SpringBoot 集成Lombok 插件
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 为了减少代码量,为当前项目添加 lombok 来优雅编码 Lombok 插件安装: a . 添加依赖: ...
- Springboot知识点
1. Spring boot简介 主要用来简化spring开发,快速地创建独立的spring项目,并且与云计算天然集成. 2. @Controller 标记一个类是Controller . 3. @ ...
- Spring Boot 项目中常见注解
@Autowired 自动导入依赖的 Bean.byType方式.把配置好的 Bean拿来用,完成属性.方法的组装,它可以对类成员变量.方法及构造函数进行标注,完成自动装配的工作 import org ...
- RPC框架实践之:Apache Thrift
一.概述 RPC(Remote Procedure Call)即 远程过程调用,说的这么抽象,其实简化理解就是一个节点如何请求另一节点所提供的服务.在文章 微服务调用链追踪中心搭建 一文中模拟出来的调 ...
- springboot oauth 鉴权之——授权码authorization_code鉴权
近期一直在研究鉴权方面的各种案例,这几天有空,写一波总结及经验. 第一步:什么是 OAuth鉴权 OAuth2是工业标准的授权协议.OAuth2取代了在2006创建的原始OAuthTM协议所做的工作. ...
- Spring Boot 鉴权之—— JWT 鉴权
第一:什么是JWT鉴权 1. JWT即JSON Web Tokens,是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519),他可以用来安全的传递信息,因为传递的信息是 ...
- Spring Data Jpa 入门学习
本文主要讲解 springData Jpa 入门相关知识, 了解JPA规范与Jpa的实现,搭建springboot+dpringdata jpa环境实现基础增删改操作,适合新手学习,老鸟绕道~ 1. ...
随机推荐
- socket 套接字服务器端和客户端发送信息
import socket import threading host='' port=6889 def cilenThred(conn,addr): print("成功接受客户端{}的连接 ...
- libguestfs手册(3): virt命令
guestmount root# guestmount -a ubuntutest1.img -m /dev/sda1 ubuntutestp1 root# cd ubuntutestp1/root: ...
- Vue 学习笔记 — 无法避免的dom操作
简书 使用Vue了一段时间,感觉确实不错,"数据驱动视图"非常好用,大部分情况下都不需要关心dom,但是凡事都有例外,总有一些时候我们必须要直接对dom进行操作,比如下面这个例子: ...
- 浅析HSTS
浅析HSTS 一.HSTS是什么? HSTS全称:HTTP Strict Transport Security,意译:HTTP严格传输安全,是一个Web安全策略机制. 二.HSTS解决什么问题? 它解 ...
- request,reponse对象中的方法
1.request对象 客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应.它是HttpServletRequest类的实例. 序号 方 法 说 明 1 obj ...
- Hadoop 数据去重
数据去重这个实例主要是为了读者掌握并利用并行化思想对数据进行有意义的筛选.统计大数据集上的数据种类个数.从网站日志中计算访问等这些看似庞杂的任务都会涉及数据去重.下面就进入这个实例的MapReduce ...
- 脚本语言丨Batch入门教程第三章:逻辑判断
通过学习Batch入门教程的前两章内容,我们已经大致掌握了基本概念和认识变量的相关内容,今天我们要跟大家继续分享第三章内容:Batch入门教程之逻辑判断. 前期回顾 ◀Batch入门教程丨部署与H ...
- Android OpenSL ES 开发:Android OpenSL 录制 PCM 音频数据
一.实现说明 OpenSL ES的录音要比播放简单一些,在创建好引擎后,再创建好录音接口基本就可以录音了.在这里我们做的是流式录音,所以需要用至少2个buffer来缓存录制好的PCM数据,这里我们可以 ...
- [Swift]LeetCode102. 二叉树的层次遍历 | Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...
- springboot中实现多数据源
springboot中实现多数据源 1.什么场景需要多数据源 业务读写分离 业务分库 业务功能模块拆分多库 2.常见的多数据源的方案 按照数据源分别把mapper和entity放到不同的package ...