对此IJ那几个IDE工具以来,大家会安装一些插件来赞助我们越来越好的举行支付,像lombok正是大器晚成款不错的插件,使用评释的章程在项目编译时推抢我们转移代码,像getter,setter,tostring等等,它们日常都以有个别双重的代码,而lombok正是支持我们转变那个再度代码的,对于二个IJ的工具以来,假诺您不运维编写翻译时表明功效,那么项目在build时会报错!
逛开源社区的时候无意开采的,用了风流洒脱段时间,感到还足以,特此推荐一下。
lombok
提供了简便的注脚的款型来提携大家简化消除一些必需有但突显很肥壮的 java
代码。特别是对此 POJO,光说不做不是自家的风骨,先来探视吧。
lombok的官网:http://projectlombok.org/
lombok评释在线扶助文书档案:http://projectlombok.org/features/index.
lombok 其实到那边小编就介绍完了,开个噱头,其实官英特网有 lombok
八分三十七秒的摄像疏解,里面讲的也很明白了,並且还也会有文书档案能够参照。在那地自己就不扯太多,先来看一下lombok
的设置,其实那个官方网站录制上也会有讲到啦
在此以前写了须臾间后台代码,发掘后台项目中接收了一个很好用的插件——Lombok。它帮忙技术员防止写一些setter、getter、toString等机械化的代码,裁减了程序猿的机械劳动。既然是Java项目,那么在Android中应该也是能用的,于是在Android项目中也尝尝了朝气蓬勃晃。
“Settings > Build >
Compiler > Annotation Processors”
然后再安装lombok插件
在项目里陈设关于lombok的信赖项
compileOnly('org.projectlombok:lombok:1.16.20')
末段就能够在代码中运用lombok的讲解了
/**
* 用户实体
*
* @Data :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
* @Setter:注解在属性上;为属性提供 setting 方法
* @etter:注解在属性上;为属性提供 getting 方法
* @og4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
* @oArgsConstructor:注解在类上;为类提供一个无参的构造方法
* @llArgsConstructor:注解在类上;为类提供一个全参的构造方法
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserInfo {
@Id
private String id;
@NotNull
private String name;
private String email;
}
好了,启用插件申明就谈到这里,多谢阅读!
lombok 提供的笺注超少,能够参见官方摄像的上书和法定文书档案。
www.2979.com的官方网址,发现后台项目中使用了一个很好用的插件——Lombok。lombok批注在线扶持文书档案:http://projectlombok.org/features/index.
上边介绍多少个自己常用的 lombok 注脚:
@Data:申明在类上;提供类具有属性的 getting 和 setting
方法,别的还提供了equals、canEqual、hashCode、toString 方法
@Setter:注脚在质量上;为属性提供 setting 方法
@Getter:注脚在质量上;为属性提供 getting 方法
@Log4j :评释在类上;为类提供二个 属性名称叫log 的 log4j 日志对象
@NoArgsConstructor:表明在类上;为类提供一个无参的构造方法
@AllArgsConstructor:注明在类上;为类提供贰个全参的构造方法
上边是差不离示例
1.不使用 lombok 的方案
public class Person {
private String id;
private String name;
private String identity;
private Logger log = Logger.getLogger(Person.class);
public Person() {
}
public Person(String id, String name, String identity) {
this.id = id;
this.name = name;
this.identity = identity;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public String getIdentity() {
return identity;
}
public void setId(String id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setIdentity(String identity) {
this.identity = identity;
}
}
2.使用 lombok 的方案:
@Data
@Log4j
@NoArgsConstructor
@AllArgsConstructor
public class Person {
private String id;
private String name;
private String identity;
}
地方的五个 java
类,从效用上来看,它们的功用是风流倜傥律的,相相比之下,很明显,使用 lombok
要简明大多,非常是在类的习性比较多的动静下,同临时候也幸免了改变字段名字时候忘记改进章程名所犯的中低端错误。
出于本身在测量试验类中利用log变量,竟然是飘红的,不过的确编写翻译运营又不会报错,对于强迫症的笔者显明要求找到衰亡的方案。由此上面特意讲讲基于IDEA+SpringBoot+lombok的行使方案。
平日来讲是Gradle文件配置。因为Lombok的原理是基于评释生成代码,所以必要使用apt。
在Project的build.gradle文件中增添对apt的信赖
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
//添加apt依赖
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
在app的build.gradle文件中期维修改
//应用apt插件
apply plugin: 'com.neenbedankt.android-apt'
...
dependencies {
compile 'org.projectlombok:lombok:1.16.8' //添加lombok依赖
...
}
使用Lombok
进步花费功能。
lombok使用Annotation来申明某些类须要增加getter,setter等,下边是行使lombok和不使用lombok的对照。
@Setter
@Getter
@ToString
public class XXX implements Entity {
String id;
}
public class XXX implements Entity {
String id;
public String getId(){
return this.id;
}
public void setId(String id){
this.id = id;
}
}
能够看出我们不再必要手工业去写Getter和Setter了。
本章的体系不涉及数额访谈,所以增加的信赖也正如少,pom.xml配置文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ozan</groupId>
<artifactId>sell</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>sell</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.10.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
lombok的重视仅仅只有壹个,lombok基于配置在编写翻译class文件时会自动将点超模板的剧情写入。
增加了依据之后,纵然编写翻译时是不利的。可是因为Android
Studio语法识别器不认得@Getter和@Setter评释,所以须求加多Lombok插件。
在装置页面 -> plugins -> browser repository -> 寻找lombok ->
install
建功立业安装之后,再写比如XXX.getId()方法时AS就不会报错了。
为了便于演示lombok
的神奇之处,大家大约创设二个顾客实体,基于该实体举行布署lombok表明,实体代码如下所示:
public class UserBean
{
//名称
private String name;
//年龄
private int age;
//家庭住址
private String address;
}
下边大家先来探问大家最常用的getter/setter
基于lombok
怎样使用。
Getter/Setter注脚成效域能够是实体类也足以是具体的属性字段,上边大家无非对name属性增加注脚,代码如下所示:
//...省略
//名称
@Getter
@Setter
private String name;
假若想让lombok生效大家还需求针对idea工具进行插件的安装,上面我们根据顺序张开Idea配置File
> Settings > Plugins > Browse repositories… >
输入lombok,插件就能够被自动物检疫索出来,分界面如下图1所示:
就此增加
lombok
的插件是分外常有不能够贫乏的,否则项目在未编写翻译前四处飘红。
本身的工具已经安装了该插件,全体在侧边是绝非其他按键的,要是你的工具没有设置该插件,侧面会有二个蓝色的按键,按键的从头到尾的经过则是Install,点击安装后重启Idea就足以了。
为了有利于我们一向利用SpringBoot项目为大家创设的测验类来表明大家的lombok注脚是还是不是曾经生效,测量试验类代码如下所示:
@RunWith(JUnit4.class)
//@RunWith(SpringRunner.class)
//@SpringBootTest
public class Chapter29ApplicationTests {
@Test
public void testLombok()
{
//测试Getter/Setter
UserBean user = new UserBean();
user.setName("测试lombok");
System.out.println(user.getName());
}
}
可以观察我们能够不奇怪使用name属性的getter/setter方法,不过任何质量的却是不可能调用,上边大家修改声明Getter/Setter地点,配置到实体类上。改善后的代码如下所示:
//省略...
@Getter
@Setter
public class UserBean
{
//名称
private String name;
//年龄
private int age;
//家庭住址
private String address;
}
大家再来测验下其余品质是还是不是能够访问到了,测量试验类改正代码如下所示:
//省略...
@Test
public void testLombok()
{
//测试Getter/Setter
UserBean user = new UserBean();
user.setName("测试lombok");
user.setAge(10);
user.setAddress("测试地址");
System.out.println(user.getName()+" " + user.getAge() +" "+user.getAddress());
}
能够看看我们改正配置地点后UserBean实体内的具备属性都具备了Getter/Setter方法,那样我们在付出中就无需再去做多余的变动操作了。
除此而外上述的Getter/SetterLombok还为大家提供了自动生成toString方法的笺注@ToString,该注解的功效域仅仅是在实体类上,我们改正实体类增添该申明,在测量试验类中调用toString方法查看输出内容如下:
System.out.println(user.toString());
//输出:
UserBean(name=测试lombok, age=10, address=sss测试地址)
Lombok自动制造的toString方法会将持有的品质都包括并且调用后可以输出。
Lombok还提供了整个参数的构造函数的自动生成,该评释的功用域也是唯有在实体类上,因为唯有实体类才会存在构造函数。改正增添该注明况且测量检验调用,如下所示:
UserBean u = new UserBean("构造lombok",1,"测试地址");
//输出:
UserBean(name=构造lombok, age=1, address=sss测试地址)
瞩目:该注明配置后会自动生成八个实际全部参数的构造函数,参数的逐条与质量定义的逐个豆蔻梢头致。
当然除了全体参数的构造函数,Lombok还提供了并未有参数的构造函数,使用办法与@AllArgsConstructor豆蔻梢头致。
到那边只怕你就有疑点了,我为着贰个类增多这么多注明麻烦呢?还不比工具生成getter/setter来的快呢,这好Lombok针对那么些难点也做出了应用方案。
我们应用@Data申明就能够满含@ToString、@Getter、@Setter方法,当然我们接纳构造函数时照旧急需单独增加注脚,上面大家改进实体类加多@Data注脚代码如下所示:
/*@Getter
@Setter
@ToString*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserBean
{
//名称
private String name;
//年龄
private int age;
//家庭住址
private String address;
public String getAddress() {
return "sss"+address;
}
}
大家将@ToString、@Getter、@Setter多少个表明注释掉后增多@Data,依照法定所说那时候大家的测验类应该不会鬼使神差任何的不得了,大家开荒测量试验类查看是还是不是符合规律。
查阅后果真,未有现身任何的不胜,这也认证了@Data申明确实含有了上边八个注脚。
再有三个利器,Lombok为大家放手了各类日志组件的支撑,大家在SpringBoot项目支出中大致都以使用logback作为日志组件,而logback是依照slf4j落成的。所以大家在实体类上直接助长@Slf4j就能够活动制造多个日记对象作为类内全局字段,自动创立的代码如下所示:
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(Chapter29ApplicationTests.class);
为了测验自个儿在Chapter29ApplicationTests测量检验类上加多了@Slf4j,调用效果如下所示:
//调用:
log.info(u.toString());
//输出:
23:55:46.100 [main] INFO com.yuqiyu.chapter29.Chapter29ApplicationTests - UserBean(name=构造lombok, age=1, address=sss测试地址)
以上内容正是本章的全体叙述,本章主要教师Lombok
用于便于开拓的笺注组件。Lombok
纵然提供的零部件超级少,然而每二个都是大家须求的,正是因为这样进而大大收缩了我们的职业量,特别是这种不起眼却又一定要写的代码。Lombok官方文书档案地址
完结,歇息!
SpringBoot实战, www.2979.com, 程序员的个人修养