澳门至尊网站-首页

您的位置:澳门至尊网站 > 技术教程 > Boot中使用小插件Lombok,Compiler时开启插件的注解

Boot中使用小插件Lombok,Compiler时开启插件的注解

2019-10-16 15:29

对此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 的设置,其实那一个官方网址录像上也可以有讲到啦

开启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的施用方案。

目标

使用Lombok拉长开荒功用。

创设项目

本章的项目不关乎数量访问,所以增加的借助也正如少,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文件时会自动将内定模板的从头到尾的经过写入。

创建实体

为了便于演示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官方文档地址

完结,歇息!

本文由澳门至尊网站发布于技术教程,转载请注明出处:Boot中使用小插件Lombok,Compiler时开启插件的注解

关键词: