springboot~Compiler时开启插件的注解功能

图片 3

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

完结,歇息!

发表评论

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