www.2527.com_澳门新葡8455手机版_新京葡娱乐场网址_
做最好的网站

Compiler时开启插件的笺注功效,Boot中接纳小插件

2019-11-04 21:51 来源:未知

对于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官方文书档案地址

完结,歇息!

TAG标签:
版权声明:本文由澳门新葡8455手机版发布于计算机编程,转载请注明出处:Compiler时开启插件的笺注功效,Boot中接纳小插件