新金沙3777

【新金沙3777】对于一个IJ的工具来说,的官方网址

十一月 1st, 2019  |  未分类

对于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;
}

好了,启用插件声明就谈起这里,谢谢阅读!

 

【新金沙3777】对于一个IJ的工具来说,的官方网址。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针对那一个主题素材也做出精晓决方案。

新金沙3777 ,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官方文书档案地址

完结,歇息!

相关文章

Your Comments

近期评论

    分类目录

    • 没有分类目录

    功能


    网站地图xml地图