Compiler时开启插件的注解功能,Boot中使用小插件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
的设置,其实那几个官方网址录制上也许有讲到啦

敞开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方法,那样大家在开拓中就没有必要再去做多余的改动操作了。

发表评论

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