美文网首页Java
怎么使用Lombok插件来简化我们JavaBean的开发呢?

怎么使用Lombok插件来简化我们JavaBean的开发呢?

作者: 十万嬉皮_c728 | 来源:发表于2022-06-15 15:44 被阅读0次

    使用Lombok插件来简化JavaBean的开发

    我们之前在开发JavaBean的时候,还是有几处比较麻烦的地方的,不知你看出来了没有。

    第一个麻烦之处是咱们要编写JavaBean的getter/setter方法;第二个麻烦之处是我们经常要为JavaBean添加有参/无参构造器,以及还得重写它的toString方法。而使用Lombok插件之后,这些我们就能简化掉了。

    那怎么使用Lombok插件来简化我们JavaBean的开发呢?很简单,只须遵循下面这几个步骤即可。

    引入对Lombok插件的依赖

    首先,我们得给咱们的项目里面引入对Lombok插件的依赖,记住咱是不用写依赖版本号的,因为Spring Boot已经默认管理了该依赖的版本。

    咱也不妨再看看,打开咱们maven项目的pom.xml文件,发现咱们的maven项目继承了如下这样一个父项目,该父项目是来做依赖管理的。

    image.png

    我们不妨点进以上父项目里面去看一看,如下图所示,发现它里面还有一个父项目。

    image.png

    我们不妨再来点进以上父项目里面去看一看,点进来以后,我们可以看到它里面有一对<properties></properties>标签,在该标签里面声明了几乎我们开发中常用的那些jar包的版本号,如下图所示。


    image.png

    咱不妨来搜索一下Lombok插件的依赖,看看它的版本号是多少,如下图所示,可以看到其版本号是1.18.20。


    image.png

    还是回到主题吧!我们要做的第一步就是在maven项目里面引入对Lombok插件的依赖,如下所示。

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    

    在IDEA中搜索安装Lombok插件

    除了在咱们的maven项目里面引入对Lombok插件的依赖之外,我们还得在IDEA中搜索安装Lombok插件,这样它就会来帮我们自动的生成JavaBean的getter/setter方法了,当然了,还有其他的东东。大家一定得注意了,Lombok插件是在程序编译的时候才会帮我们生成那些玩意,所以咱们的源代码看起来会很清晰。

    在IDEA中安装插件很简单的啦!其实,如果你用的是比较新的IDEA,比如笔者用的IntelliJ IDEA 2020.3.3,那么你也不需要再安装Lombok插件了,因为IntelliJ IDEA 2020.3.3早就已经集成该插件了。

    使用Lombok插件

    现在,我们就能在咱的程序里面使用Lombok插件了。使用上该插件之后,在咱开发的JavaBean里面,你就再也不用写那些getter/setter方法、有参/无参构造器以及toString方法了,如此一来,JavaBean里面就保持得很干净了。当然,要是你不使用Lombok插件,而且还堂而皇之的不写属性的getter/setter方法,那么这些属性就相当于跟没有一样。

    接下来,我就来告诉大家如何在咱开发的JavaBean里面使用Lombok插件(的注解)。

    @Data注解

    首先,我们来看Lombok插件里面的第一个注解,即@Data,该注解是来帮我们生成我们已有属性的getter/setter方法的。下面我就以Pet类为例来进行演示了哟

    先把Pet类里面name属性的getter/setter方法给删除掉,然后在Pet类上标注一个@Data注解,如下所示。

    package com.meimeixia.boot.bean;
    import lombok.Data;
    /**
     * @author liayun
     * @create 2021-04-23 19:16
     *
     * 宠物
     */
    @Data
    public class Pet {
        private String name;
        public Pet() {
        }
        public Pet(String name) {
            this.name = name;
        }
        @Override
        public String toString() {
            return "Pet{" +
                    "name='" + name + '\'' +
                    '}';
        }
    }
    
    

    这样,在程序编译的时候@Data注解就会帮我们生成name属性的getter/setter方法了。

    @ToString注解

    @ToString注解是在程序编译的时候自动帮我们生成JavaBean的toString方法的,注意不是在源代码中就给我们生成了哟,因此我们的源代码会看起来很清爽。

    那么,@ToString注解该怎么用呢?很简单,先把Pet类里面的toString方法给删除掉,然后在Pet类上标注一个@ToString注解,如下所示。

    package com.meimeixia.boot.bean;
    
    import lombok.Data;
    import lombok.ToString;
    
    /**
     * @author liayun
     * @create 2021-04-23 19:16
     *
     * 宠物
     */
    @Data
    @ToString
    public class Pet {
    
        private String name;
    
        public Pet() {
    
        }
    
        public Pet(String name) {
            this.name = name;
        }
    
    }
    

    @AllArgsConstructor注解

    在JavaBean里面,我们得经常添加有参无参构造器,如果还是像之前一样以手写或者快捷键的方式来生成,未免有些麻烦。而现在用上Lombok插件之后,一个注解就能搞定了。这里,我们先来看一下@AllArgsConstructor注解,该注解是使用JavaBean中所有属性来帮我们生成一个有参构造器的,即全参构造器。

    那么,@AllArgsConstructor注解该怎么用呢?很简单,先把Pet类里面的有参构造器给删除掉,然后在Pet类上标注一个@AllArgsConstructor注解,如下所示。

    package com.meimeixia.boot.bean;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.ToString;
    
    /**
     * @author liayun
     * @create 2021-04-23 19:16
     *
     * 宠物
     */
    @Data
    @ToString
    @AllArgsConstructor
    public class Pet {
    
        private String name;
    
        public Pet() {
    
        }
    
    }
    

    @NoArgsConstructor注解

    @NoArgsConstructor注解是来帮我们生成JavaBean的无参构造器的。

    那么,@NoArgsConstructor注解该怎么用呢?很简单,先把Pet类里面的无参构造器给删除掉,然后在Pet类上标注一个@NoArgsConstructor注解,如下所示。

    package com.meimeixia.boot.bean;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    import lombok.ToString;
    
    /**
     * @author liayun
     * @create 2021-04-23 19:16
     *
     * 宠物
     */
    @Data
    @ToString
    @AllArgsConstructor
    @NoArgsConstructor
    public class Pet {
    
        private String name;
    
    }
    

    看到了没有,咱们的源代码是不是看起来非常清爽了啊!

    举一反三,大家接下来不妨将如下User类也给整改一下,不知道你会不会?

    package com.meimeixia.boot.bean;
    
    /**
     * @author liayun
     * @create 2021-04-23 19:14
     *
     * 用户
     */
    public class User {
    
        private String name;
        private Integer age;
    
        private Pet pet;
    
        public Pet getPet() {
            return pet;
        }
    
        public void setPet(Pet pet) {
            this.pet = pet;
        }
    
        public User() {
    
        }
    
        public User(String name, Integer age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    ", pet=" + pet +
                    '}';
        }
    
    }
    

    使用上Lombok插件里面的注解之后,不知道大家是不是写成了下面这样?

    package com.meimeixia.boot.bean;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    import lombok.ToString;
    
    /**
     * @author liayun
     * @create 2021-04-23 19:14
     *
     * 用户
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @ToString
    public class User {
    
        private String name;
        private Integer age;
    
        private Pet pet;
    
        public User(String name, Integer age) {
            this.name = name;
            this.age = age;
        }
    
    }
    

    大家可一定要注意了,以上@AllArgsConstructor注解是来帮我们生成JavaBean的全参构造器的。如果你不想使用JavaBean中所有属性来生成一个有参构造器,例如只想使用JavaBean中name和age这两个属性来生成一个有参构造器,那么这就得你自己来写了,就像上面那样。这样,灵活性是不是就比较强一点了啊!

    @EqualsAndHashCode注解

    @EqualsAndHashCode注解是使用JavaBean中所有属性来帮我们重写JavaBean的equals和hashCode这俩方法的。

    该注解使用起来也特别简单,即在JavaBean上标注该注解就行,如下所示。

    package com.meimeixia.boot.bean;
    
    import lombok.*;
    
    /**
     * @author liayun
     * @create 2021-04-23 19:14
     *
     * 用户
     */
    @Data
    @NoArgsConstructor
    //@AllArgsConstructor
    @ToString
    @EqualsAndHashCode
    public class User {
    
        private String name;
        private Integer age;
    
        private Pet pet;
    
        public User(String name, Integer age) {
            this.name = name;
            this.age = age;
        }
    
    }
    

    @Slf4j注解

    Lombok插件里面还有一个注解,即@Slf4j,使用上该注解之后就相当于注入了日志相关组件,因此可以简化日志开发,这样,我们以后就再也不用通过输出语句来打印日志了。若我们想要记录东西,则使用日志即可。

    那么,@Slf4j注解又该怎么用呢?很简单,我们不妨在HelloController类上标注上该注解,如此一来,该注解就会自动给HelloController这个类里面注入log这样一个属性(组件)了,也即日志记录器,然后咱就可以使用该日志记录器来记录日志了。

    package com.meimeixia.boot.controller;
    
    import com.meimeixia.boot.bean.Car;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @author liayun
     * @create 2021-04-19 4:24
     */
    @Slf4j
    @RestController
    public class HelloController {
    
        @Autowired
        Car car; // car实例里面每一个属性的值都是跟配置文件进行绑定的
    
        @RequestMapping("/car")
        public Car car() {
            return car;
        }
    
        @RequestMapping("/hello")
        public String handle01(@RequestParam("name") String name) {
            // 在HelloController类上标注了@Slf4j注解之后,该注解会自动给HelloController这个类里面注入log这样一个属性(组件),也即日志记录器
            log.info("请求进来了......");
            return "Hello, Spring Boot 2!" + "你好:" + name;
        }
    
    }
    

    此时,我们就来做一个测试,看一下我们整个Spring Boot应用的所有功能是不是都能正常运行。

    重新启动咱们的Spring Boot应用,然后在浏览器中访问hello请求,访问成功之后,可以看到我们的日志也是能正常打印出来的,如下图所示。


    image.png

    相关文章

      网友评论

        本文标题:怎么使用Lombok插件来简化我们JavaBean的开发呢?

        本文链接:https://www.haomeiwen.com/subject/xyyxvrtx.html