澳门金莎娱乐手机版 金沙澳门手机版网址 而lombok就是帮助我们生成这些重复代码的,发现后台项目中使用了一个很好用的插件——Lombok

而lombok就是帮助我们生成这些重复代码的,发现后台项目中使用了一个很好用的插件——Lombok



对于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项目中也尝尝了须臾间。

拉开build时的批注

 “Settings > Build >
Compiler > Annotation Processors”

图片 1

接下来再安装lombok插件

图片 2

在品种里布置关于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 注解:

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文件时会自动将钦命模板的原委写入。

AS插件

加多了依据之后,尽管编写翻译时是不利的。但是因为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


Getter/Setter评释作用域能够是实体类也足以是切实的品质字段,上面大家唯有对name属性增加评释,代码如下所示:

//...省略
//名称
@Getter
@Setter
private String name;

假定想让lombok生效大家还供给针对idea工具进行插件的装置,下边我们根据顺序张开Idea配置File
> Settings > Plugins > Browse repositories… >
输入lombok,插件就能被自动物检疫索出来,界面如下图1所示:

图片 3


于是加多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方法,这样我们在开垦中就没有必要再去做多余的变迁操作了。

ToString


除开上述的Getter/SetterLombok还为大家提供了自动生成toString方法的讲授@ToString,该表明的效率域仅仅是在实体类上,大家校勘实体类增加该评释,在测量检验类中调用toString方法查看输出内容如下:

System.out.println(user.toString());
//输出:
UserBean(name=测试lombok, age=10, address=sss测试地址)

Lombok自动创立的toString方法会将具有的属性都包含何况调用后得以出口。

AllArgsConstructor


Lombok还提供了一切参数的构造函数的自动生成,该评释的功效域也是独有在实体类上,因为独有实体类才会存在构造函数。矫正加多该申明何况测验调用,如下所示:

UserBean u = new UserBean("构造lombok",1,"测试地址");
//输出:
UserBean(name=构造lombok, age=1, address=sss测试地址)

当心:该声明配置后会自动生成叁个绘身绘色全体参数的构造函数,参数的生机勃勃大器晚成与品质定义的风流浪漫生机勃勃风度翩翩致。

NoArgsConstructor

自然除了全体参数的构造函数,Lombok还提供了未曾子舆数的构造函数,使用办法与@AllArgsConstructor后生可畏致。

到此地可能你就有问号了,我为着三个类增加这么多注明麻烦呢?还不及工具生成getter/setter来的快呢,那好Lombok针对那几个主题素材也做出了建设方案。

Data


作者们运用@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证明确实含有了地点四个表明。

Slf4j


还会有叁个利器,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官方文档地址

完结,歇息!

标签:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图