使用 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. ...
随机推荐
- 关于js的页面高度和滚动条高度还有元素高度
window.innerHeight 这是浏览器里面内容的高度,直接就是值,不需要其它操作; window.pageYOffset 这是滚动条到浏览器顶端的距离; $(元素).offset(). ...
- php-cgi占用太多cpu资源而导致服务器响应过慢
服务器环境:redhat linux 5.5 , nginx , phpfastcgi 在此环境下,一般php-cgi运行是非常稳定的,但也遇到过php-cgi占用太多cpu资源而导致服务器响应过慢 ...
- 搭建一个舒适的 .NET Core 开发环境
最近,一直在往.Net Core上迁移,随着工作的深入,发现.Net Core比.Net Framework好玩多了.不过目前还在windows下开发,虽然VisualStudio是宇宙第一神器,但是 ...
- idea中@Data标签getset不起作用
spring cloud中使用@Data标签,不用手动添加get set方法,但是如果项目中其他类中使用getset方法,如果报错,原因是idea中没有添加Lombok插件,添加上插件便可以解决.截图 ...
- [Swift]LeetCode715. Range 模块 | Range Module
A Range Module is a module that tracks ranges of numbers. Your task is to design and implement the f ...
- [Swift]LeetCode891. 子序列宽度之和 | Sum of Subsequence Widths
Given an array of integers A, consider all non-empty subsequences of A. For any sequence S, let the ...
- [Swift]LeetCode897. 递增顺序查找树 | Increasing Order Search Tree
Given a tree, rearrange the tree in in-order so that the leftmost node in the tree is now the root o ...
- 机器学习基石笔记:Homework #1 PLA&PA相关习题
原文地址:http://www.jianshu.com/p/5b4a64874650 问题描述 程序实现 # coding: utf-8 import numpy as np import matpl ...
- ThinkInJava之内部类
一:内部类概述 将一个类的定义放在另一个类的内部,这就是内部类.内部类是Java一种非常有用的特征,因为他允许你把一些逻辑相关的数据组织在一起,并控制它的可见性. 二:内部类的创建 我们都知道类的创建 ...
- 10.Django ModelForm
ModelForm 1.ModeForm简单验证 from django.db import models # Create your models here. class UserInfo(mode ...