关于Lombok的认识及其应用(一)
1、Lombok的介绍
Lombok是一款Java开发插件,使得Java开发者可以通过其定义的一些注解来消除业务工程中冗长和繁琐的代码,尤其对于简单的Java模型对象(POJO)。在开发环境中使用Lombok插件后,Java开发人员可以节省出重复构建,诸如hashCode和equals这样的方法以及各种业务对象模型的accessor和ToString等方法的大量时间。对于这些方法,它能够在编译源代码期间自动帮我们生成这些方法,并没有如反射那样降低程序的性能。
2、Lombok的安装
注意 :主要基于IDEA开发软件(也不是安装,只是添加插件或依赖)
如何找到如下图的插件:Files->Settings->Plugins,然后搜索Lombok
另外需要注意的是,在使用lombok注解的时候记得要导入lombok.jar包到工程,如果使用的是Maven的工程项目的话,要在其pom.xml中添加依赖如下:
<!--版本申明-->
<lombok.version>1.6.18</lombok.version>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
3、Lombok实现原理分析
1、其开发是遵循JSR 269 Pluggable Annotation Processing API;
2、而javac从java6开始支持“JSR 269 API”规范;
3、即只要程序实现了该API,就能在javac运行的时候得到调用;
4、Lombok实现了“JSR 269 API”。
在编译时,javac编译源码的具体流程如下:
4、Lombok使用方法
Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对应方法的失误。
Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。出现的神奇就是在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法。这样就省去了手动重建这些代码的麻烦,使代码看起来更简洁些。
4.1、@Data注解
@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
不使用@Data注解代码如下:
package org.mrzhangxd.com.springboot_vue_exam.entry;
/**
* @Project: springboot_vue_exam
* @Description:
* @Package: org.mrzhangxd.com.springboot_vue_exam.entry
* @Create by 张小东 on 2019/11/24 19:00
*/
public class Admin {
/** 版本号 */
private static final long serialVersionUID = -5661933053710306924L;
/** 管理员ID */
private Integer adminId;
/** 管理员姓名 */
private String adminName;
/** 管理员性别 */
private String adminSex;
/** 管理员电话号码 */
private String adminTel;
/** 管理员邮箱 */
private String adminEmail;
/** 密码 */
private String adminPwd;
/** 身份证号 */
private String adminCardnum;
/** 角色(0管理员,1教师,2学生) */
private String adminRole;
/**
* 获取管理员ID
*
* @return 管理员ID
*/
public Integer getAdminId() {
return adminId;
}
/**
* 设置管理员ID
*
* @param adminId
* 管理员ID
*/
public void setAdminId(Integer adminId) {
this.adminId = adminId;
}
/**
* 获取管理员姓名
*
* @return 管理员姓名
*/
public String getAdminName() {
return this.adminName;
}
/**
* 设置管理员姓名
*
* @param adminName
* 管理员姓名
*/
public void setAdminName(String adminName) {
this.adminName = adminName == null ? null : adminName.trim();
}
/**
* 获取管理员性别
*
* @return 管理员性别
*/
public String getAdminSex() {
return adminSex;
}
/**
* 设置管理员性别
*
* @param adminSex
* 管理员性别
*/
public void setAdminSex(String adminSex) {
this.adminSex = adminSex == null ? null : adminSex.trim();
}
/**
* 获取管理员电话号码
*
* @return 管理员电话号码
*/
public String getAdminTel() {
return adminTel;
}
/**
* 设置管理员电话号码
*
* @param adminTel
* 管理员电话号码
*/
public void setAdminTel(String adminTel) {
this.adminTel = adminTel == null ? null : adminTel.trim();
}
/**
* 获取管理员邮箱
*
* @return 管理员邮箱
*/
public String getAdminEmail() {
return this.adminEmail;
}
/**
* 设置管理员邮箱
*
* @param adminEmail
* 管理员邮箱
*/
public void setAdminEmail(String adminEmail) {
this.adminEmail = adminEmail == null ? null : adminEmail.trim();
}
/**
* 获取密码
*
* @return 密码
*/
public String getAdminPwd() {
return adminPwd;
}
/**
* 设置密码
*
* @param adminPwd
* 密码
*/
public void setAdminPwd(String adminPwd) {
this.adminPwd = adminPwd == null ? null : adminPwd.trim();
}
/**
* 获取身份证号
*
* @return 身份证号
*/
public String getAdminCardnum() {
return adminCardnum;
}
/**
* 设置身份证号
*
* @param adminCardnum
* 身份证号
*/
public void setAdminCardnum(String adminCardnum) {
this.adminCardnum = adminCardnum == null ? null : adminCardnum.trim();
}
/**
* 获取角色(0管理员,1教师,2学生)
*
* @return 角色(0管理员
*/
public String getAdminRole() {
return adminRole;
}
/**
* 设置角色(0管理员,1教师,2学生)
*
* @param adminRole
* 角色(0管理员
*/
public void setAdminRole(String adminRole) {
this.adminRole = adminRole == null ? null : adminRole.trim();
}
}
使用@Data注解后代码:
package org.mrzhangxd.com.springboot_vue_exam.entry;
import lombok.Data;
/**
* @Project: springboot_vue_exam
* @Description:
* @Package: org.mrzhangxd.com.springboot_vue_exam.entry
* @Create by 张小东 on 2019/11/24 19:00
*/
@Data
public class Admin {
/** 管理员ID */
private Integer adminId;
/** 管理员姓名 */
private String adminName;
/** 管理员性别 */
private String adminSex;
/** 管理员电话号码 */
private String adminTel;
/** 管理员邮箱 */
private String adminEmail;
/** 密码 */
private String adminPwd;
/** 身份证号 */
private String adminCardnum;
/** 角色(0管理员,1教师,2学生) */
private String adminRole;
}
4.2、@Getter/@Setter注解
如果觉得@Data太过残暴(因为@Data集合了@ToString、@EqualsAndHashCode、@Getter/@Setter、@RequiredArgsConstructor的所有特性)不够精细,可以使用@Getter/@Setter注解,此注解在属性上,可以为相应的属性自动生成Getter/Setter方法,示例如下:
package org.mrzhangxd.com.springboot_vue_exam.entry;
import lombok.Setter;
import lombok.getter;
/**
* @Project: springboot_vue_exam
* @Description:
* @Package: org.mrzhangxd.com.springboot_vue_exam.entry
* @Create by 张小东 on 2019/11/24 19:00
*/
public class Demo1{
@Getter
@Setter
private String username;
@Getter
@Setter
private String password;
@Override
public String toString(){
return String.format(username,password);
}
}
不使用@Getter/@Setter注解的代码:
package org.mrzhangxd.com.springboot_vue_exam.entry;
import lombok.
/**
* @Project: springboot_vue_exam
* @Description:
* @Package: org.mrzhangxd.com.springboot_vue_exam.entry
* @Create by 张小东 on 2019/11/24 19:00
*/
public class Demo{
/** 用户名*/
private String username;
/** 密码*/
private String password;
/**
* 获取用户名
* @return 用户名
*/
public String getUsername(){
return username;
}
/**
* 设置用户名
*
* @param Username
* 用户名
*/
public void setUsername(String username){
this.Username = username;
}
/**
* 获取用户密码
* @return 用户密码
*/
public String getPassword(){
return username;
}
/**
* 设置用户密码
*
* @param Password
* 用户密码
*/
public void setPssword(String password){
this.Pasword = password;
}
}
后续更新... ...
关于Lombok的认识及其应用(一)的更多相关文章
- 记录一次bug解决过程:eclipse集成lombok插件
一 总结 eclipse集成插件lombok: 启动Spring Boot项目: sublime全局搜索关键字:ctrl + shift + F JDK8中的lambda表达式使用 二 BUG描述:集 ...
- lombok在IntelliJ IDEA下的使用
lombok是一款可以精减java代码.提升开发人员生产效率的辅助工具,利用注解在编译期自动生成setter/getter/toString()/constructor之类的代码.代码越少,意味着出b ...
- lombok 简化java代码注解
lombok 简化java代码注解 安装lombok插件 以intellij ide为例 File-->Setting-->Plugins-->搜索"lombok plug ...
- Lombok 安装、入门 - 消除冗长的 java 代码
lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码. lombok 的官方网址:http://projectlombok.org/ lombok 安装1. ...
- lombok介绍
Lombok是一种JavaArchive(JAR)文件,可用来消除Java代码的冗长.在写代码时,可以通过这个插件消除各种getter和setter,toString等常用方法. lombok 注解: ...
- Lombok简化Java代码
导包:import lombok.Data; Lombok简化Java代码: 在Lombok中,生成构造方法的annotation一共有三个:@NoArgsConstructor, @Required ...
- myeclipse 手动安装 lombok
1. 将 lombok.jar 复制到 myeclipse.ini / eclipse.ini 所在的文件夹目录下 2. 打开 eclipse.ini / myeclipse.ini,在最后面插 ...
- lombok+slf4j+logback SLF4J和Logback日志框架详解
maven 包依赖 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lomb ...
- Java代码简化神器-Lombok
一.背景 前段时间在开源社区中发现了一个比较牛逼的简化Java代码的神器-Lombok,接着自己写了demo进行测试和练习,感觉真的很不错,特此分享给需要的小伙伴们~ 二.开发之前的准备 1.lomb ...
- MyEclipse安装lombok
1. 将lombok.jar复制到myeclipse.ini所在的文件夹 2. 打开myeclipse.ini,插入以下两行: -Xbootclasspath/a:lombok.jar-javaage ...
随机推荐
- 【洛谷 P4052】 [JSOI2007]文本生成器(AC自动机,DP)
题目链接 AC自动机上dp第一题嗷. 如果直接求可读文本的数量,显然要容斥,不好搞. 于是考虑求不可读文本的数量,再用\(26^m\)减去其即可. 建出AC自动机,如果一个节点为单词结尾或其fail链 ...
- isolate两三事
1.1. 第一步:创建并握手 如前所述,Isolate 不共享任何内存并通过消息进行交互,因此,我们需要找到一种方法在「调用者」与新的 isolate 之间建立通信. 每个 Isolate 都暴露了一 ...
- DateTimePicker控件CustomFormat格式字符串及其说明
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wuzhanwen/article/details/78800720格式字符串 描述 d 一个或两位数 ...
- python day4 元组/字典/集合类知识点补充
目录 python day4 元组/字典/集合类知识点补充 1. 元组tuple知识点补充 2. 字典dict的知识点补充 3. 基本数据类型set 4. 三元运算,又叫三目运算 5. 深复制浅复制 ...
- angular异步获取数据后在ngOnInit中无法获取,显示undefined解决办法
两种方法 1 通过*ngif动态加载要数据渲染的dom 2 通过路由导航resolve 第一种感觉太麻烦了,要是一个页面请求多个接口,那就不得不写多个*ngif,本人还是更倾向与第二种发法 具体步骤: ...
- 【JUC】5.线程池—Executor
创建线程池可以分为三种方式: 1. 通过ThreadPoolExecutor的构造方法,创建ThreadPoolExecutor的对象,即一个线程池对象: 此构造方法,一共7个参数,5个必须参数,2个 ...
- SQL SERVER-AlwaysonResolving
虽然2台都是同步提交,自动failover模式 在辅助副本的AG中先删掉一个可用DB,然后关闭主副本,之后辅助副本变为下图.不能自动failover. 重新开启主副本后,主副本显示一切正常 但是辅助副 ...
- c# 使用泛型集合List<T>
- P1559 运动员最佳匹配问题[最大费用最大流]
题目描述 羽毛球队有男女运动员各n人.给定2 个n×n矩阵P和Q.P[i][j]是男运动员i和女运动员j配对组成混合双打的男运动员竞赛优势:Q[i][j]是女运动员i和男运动员j配合的女运动员竞赛优势 ...
- 在输出debug日志前加上logger.isDebugEnabled()判断的原因
场景: String token = md5.substring(0, 10) + base64Two + md5.substring(10); if (logger.isDebugEnabled() ...