使用 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. ...
随机推荐
- DataRow[]
datarow[]是datatable 的行数组集合,但是呢好像是不能直接初始化,只能是datarow[] rows = dt.select(condition);这样子.(也可能我才疏学浅没找到吧) ...
- 关于Http协议,你必须要知道的
转自:https://segmentfault.com/a/1190000016751071 引言 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用 ...
- dc的博客翻修计划启动
紫书大部分学习完毕,等待一轮补完计划: 白书正在攻略中,进度百分之30: 博客翻修计划启动,我会在本学期内逐渐写系统性的学习笔记,我学习时遇到的困难的地方会有说明: 每个部分一定会放上经过验证的实现: ...
- postman run之前需要手动调整顺序
最近刚入坑postman,记录下遇到的坑: 1.先用postman interceptor录制好脚本,在postman中,将History的脚本导入Collections,由于项目接口之间需要toke ...
- 欢迎访问我的独立博客 tracefact.net (2019.1.30)
欢迎访问我的独立博客 tracefact.net 长期以来,我都同时维护着两个博客,博客园和 tracefact.net,感觉有点分散精力,所以博客园以后不再每篇文章都同步更新了. 我会挑个别比较好的 ...
- 【RL-TCPnet网络教程】第31章 Telnet远程登录基础知识
第31章 Telnet远程登录基础知识 本章节为大家讲解Telnet (Teletype Network) 的基础知识,方便后面章节的实战操作. (本章的知识点主要整理自网络) 31.1 ...
- 最小可用id
题目:在非负数组(乱序)中找到最小的可分配的id(从1开始编号),数据量10000000. 题目解读:在一个不重复的乱序的自然数组中找到最小的缺失的那个数,比如1,2,3,6,4,5,8,11.那么最 ...
- #Java学习之路——基础阶段(第十篇)
我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...
- QWebView加载网页
开发环境:win10家庭中文版,vs2013,qt5.5.1 目的:使用webkit加载web页面代码如下: #include #include #ifdef _DEBUG#pragma commen ...
- Docker折腾手记-安装
安装 docker红的发紫,所以博主耳闻这么久,也要来折腾折腾了 研究不多,个人目前认为docker给我们带来了以下好处 开发机器因为开发原因,需要配置各种各校的环境,繁琐且耗费资源.配来配去还容易环 ...