最近项目组在重构目前的工程,将H5的后台服务和PC上的服务合并,在重构过程中,想加入一些新鲜是元素,于是就发现了这个能够精简代码的东东~
关于Lombok这个东西,论坛里已经有人介绍过,我也是通过别人帖子了解到这个小工具:
http://www.iteye.com/topic/798305
不过作者以免写Getter/Setter为题来介绍Lombok的优势,看了后面的评论之后,觉得这个工具意义不大.
后来在博客在线看到一篇文章,期中提到了Lombok工具.这个工具已经被国外创业者所使用,随之对其产生了很浓厚的兴趣.
关于如何介绍Lombok这个工具,自己想了半天,觉得实在比不过作者在首页提供的视频介绍:
http://projectlombok.org/
ok~ 写了这么多Lombok到底是什么东西,他具体能带来什么便利呢?
Lombok主要是提供一套注解,根据注解在编译时生成相关代码,目前提供如下注解:
@Getter / @Setter
永远不用再写 public int getFoo() {return foo;}.
@Getter(lazy=true)
Laziness is a virtue!
@ToString
Lombok会根据field自动生成toString 方法,这个对调试来说很方便! 这个注解生成的toString格式:
LombokUser(id=001, name=wity_lv, email=wity_lv@sample.com)
@EqualsAndHashCode
生成 hashCode and equals 方法.
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
Constructors made to order: Generates constructors that take no arguments, one argument per final / non-null field, or one argument for every field.
@Data
All together now: A shortcut for @ToString, @EqualsAndHashCode, @Getter on all fields, and @Setter on all non-final fields, and @RequiredArgsConstructor!
@Cleanup
Automatic resource management: Call your close() methods safely with no hassle.
@Synchronized
synchronized done right: Don't expose your locks.
@SneakyThrows
To boldly throw checked exceptions where no one has thrown them before!
@Log
支持多种Log工具, 我平时用@Log4j注解
val
Finally! Hassle-free final local variables.
@Delegate
Don't lose your composition.
如何使用?
1. 从项目https://github.com/mplushnikov/lombok-intellij-plugin 首页下载lombok-plugin-0.9.8.14.zip
2. using Preferences > Plugins > Install plugin from disk...将其安装到intellij 中(该项目需要jdk1.6+的环境)
3. Maven依赖:
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.6</version> <scope>provided</scope> </dependency>
使用lombok项目的方法很简单,分为四个步骤:
1)在需要自动生成getter和setter方法的类上,加上@Data注解
2)在编译类路径中加入lombok.jar包
3)使用支持lombok的编译工具编译源代码(关于支持lombok的编译工具,见“四、支持lombok的编译工具”)
4)编译得到的字节码文件中自动生成了getter和setter方法
package lv.sample.lombok; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.extern.log4j.Log4j; @Data @NoArgsConstructor @AllArgsConstructor @Log4j public class LombokUser { private String id = null; private String name = null; private String email = null; public static void main(String[] args) { log.info("test the lombok bean"); LombokUser u = new LombokUser("001", "wity_lv", "wity_lv@sample.com"); System.out.println(u.toString()); LombokUser u2 = new LombokUser("001", "wity_lv", "wity_lv@sample.com"); System.out.println(u.equals(u2)); } }
到这里 ~ 这些仅仅只是作者提供一些方便的注释, 当然我们可以fork这个项目的 GitHub, 研究内部原理,构建适合自己团队的Lombok:
https://github.com/rzwitserloot/lombok
相关推荐
为了达到这一目标,开发者经常采用各种技术来优化和精简代码,其中注解(Annotation)就是一种强大的工具。本文将深入探讨如何在Android中利用注解来实现代码的精简,并结合基类的完美封装,提升开发效率和代码质量...
lombok.jar 精简代码,很好用的jar包。
+ `Lombok(精简代码量)` + `Layui 2.2.3(前端UI/JS框架,美观大气UI)` + `LayuiXTree (展示树结构模型,对源码做了些许修改以适应本应用)` + `formSelects - 4.x (基于layui的select的下拉多选方案插件)` + ...
最佳实践的项目结构,配置文件,精简的POM 统一响应结果封装及生成工具 统一异常处理 简单的接口签名认证 常用基础方法抽象封装 使用Druid Spring Boot Starter集成Druid数据库连接池与监控 使用FastJson...
该版本在mendora第一个版本的基础上精简代码,以及服务基础功能内核化。任何一个微服务仅需要引入kernel包,按照微服务定制内核功能即可快速构建一个微服务。 技术方案 核心体系为Vertx Java、Guice和Lombok。详情...
- 最佳实践的项目结构、配置文件、精简的POM - 统一响应结果封装及生成工具 - 统一异常处理 - 简单的接口签名认证 - 常用基础方法抽象封装 - 使用Druid Spring Boot Starter 集成Druid数据库连接池与监控 - 使用...
代码精简与日志支持: **lombok** ###### 前端支持: 主体支持:**jQuery** 风格支持:**layui** 图标支持:**font-awesome** 弹窗支持:**layer** websocket支持:**sockjs** 树结构支持:**ztree** ### ...
本项目已大量重构,精简扩展代码减少了第三方依赖,最干净的脚手架。上载lombok大量简化了代码上一篇MyBatis Plus大量简化了SQL约会hutool工具包规范工具类♡minio分布式文件系统前一级完全脱离,前端代码可单独部署...
通过简单注解来精简代码达到消除冗长代码,本项目用于实体类 └── Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务 3、项目主要目录 src/main/java/com/cf/tool/spider: ...
Java版水果管理系统源码第 1 周 Java: 瓦弗: 使用 Spring Boot 进行测试驱动开发 - 测试更难的东西: 一个由词向量构建的简单拼写检查器 - 值得注意 - 期刊博客: ...Lombok ...更具表现力代码的 ...流更精简、更
通过合理规划模块划分,减少不必要的依赖,或者使用`provided`、`runtime`等范围来精简类路径。 3. **使用Maven profiles**:针对不同的环境(开发、测试、生产),可以创建不同的配置profile,以便于根据需要调整...
所有前端后台代码封装过后十分精简易上手,出错效率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。您是否在找一套合适后台管理系统。您是否在找一套代码易读易懂后台管理系统。那么,现在若依来了。诚意...
所有前端后台代码封装过后十分精简易上手,出错效率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。 您是否在找一套合适后台管理系统。 您是否在找一套代码易读易懂后台管理系统。 那么,现在若依来了。...
uexam学之思在线考试系统是一款 java + vue 的前后端分离的考试系统。主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰。目前支持web端和微信小程序,能覆盖到pc机和手机等设备...5.移除lombok插件,减少依赖