开发者

Java工具包之Lombok使用

开发者 https://www.devze.com 2024-09-06 10:18 出处:网络 作者: _周游
目录1. maven仓库手动导入依赖+注解1.1 maven仓库引入依赖1.2 在类上使用@Data注解1.3 在属性上使用@Getter与@Setter注解2. EditStarters插件+注解2.1 安装EditStarters插件2.3 在ja编程va对象类中使用注解3. lombok
目录
  • 1. maven仓库手动导入依赖+注解
    • 1.1 maven仓库引入依赖
    • 1.2 在类上使用@Data注解
    • 1.3 在属性上使用@Getter与@Setter注解
  • 2. EditStarters插件+注解
    • 2.1 安装EditStarters插件
    • 2.3 在ja编程va对象类中使用注解
  • 3. lombok工具使用结果查看
    • 3.1 手动package
  • 总结

    在Spring项目中创建Java对象,如果使用手动生成getter、setter、toString等方法提供调用接口,会导致代码修改成本与复杂度大大增加;

    lombok是一个Java工具库,通过添加注解的方式简化了Java的开发;

    接下来简单介绍lombok的使用方法;

    使用lombok有两种方法:

    (1)maven仓库手动导入依赖+注解;

    (2)EditStarters插件+注解;

    1. maven仓库手动导入依赖+注解

    1.1 maven仓库引入依赖

    链接如下:

    https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.24

    copy至pom.XML文件中即可:

    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.24</version>
        <scope>provided</scope>
    </dependency>

    注:勿忘在maven面板中进行刷新:

    Java工具包之Lombok使用

    1.2 在类上使用@Data注解

    在java类上增加@Data注解:

    package com.example.demo.controller;
    
    import lombok.Data;
    
    import java.util.Date;
    
    @Data
    public class MessageInfo {
        private String from;
        private String to;
        private String message;
        private Date CreateTime;
    }

    此时在对应的Controller中增加相应的获取属性的get方法,即使没有显式编写相关代码,但可见可以成功调用: (.getFrom()方法未标红报错)

    package com.exphpample.demo.controller;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    @RequestMapping("/message")
    @RestController
    public class MessageController {
        @RequestMapping("/publish")
        public Boolean publishMessage(MessageInfo messageInfo){
        编程客栈    String from = messageInfo.getFrom();
            return false;
        }
        @RequestMapping("/getMessageList")
        public List<MessageInfo> getMessageList(){
            return null;
        }
    }

    (请忽略该controller的业务逻辑,此处仅用于辅助展示lombok作用)

    @Data注解就是lombok提供的通过注解自动生成属性的get与set方法,可避免修改接口属性导致需修改其对应的get与set方法造成的麻烦,同时也可以消除冗余代码;

    1.3 在属性上使用@Getter与@Setter注解

    @Data注解修饰类时,表示提供该类所有属性的get与set方法,这对于某些属性不希望被获取是不够灵活的,故而可以在属性上使用@Getter与@Setter注解,以实现面向属性生成get与set方法:

    package com.example.demo2.controller;
    
    import lombok.Getter;
    import lombok.Setter;
    import lombok.ToString;
    
    import java.util.Date;
    
    @ToString
    public class MessageInfo {
        @Getter @Setter
        private String from;
        @Getter @Setter
        private String to;
        private String message;
        private Date CreateTime;
    }

    以上代码的含义为:属性from支持获取与写入,to支持获取;

    注:附lombok相较于@Data更细颗粒度的注解有:

    注解

    作用

    @Getter自动添加getter方法
    @Setter自动添加setter方法
    @ToString自动添加toString方法
    @EqualAndHashCode自动添加equals和hashCode方法
    @NoArgsConstructor自动添加无参构造方法
    @AllArgsConstructor自动添加全属性构造方法,顺序按照属性的定义顺序
    @NonNull属性不能为null
    @RequireArgsConstructor自动添加必须属性的构造方法,final+@Null的属性为必须
    @Data =
    @Getter + @Setter +@ToString +@ EqualAndHashCode
    +@ RequireArgsConstructor + @ NoArgsConstructor;

    2. EditStarters插件+注解

    2.1 安装EditStarters插件

    Java工具包之Lombok使用

    安装完后重启IDEA方可生效

    2.2 在pom.xml中进行操作

    Java工具包之Lombok使用

    Java工具包之Lombok使用

    Java工具包之Lombok使用

    直接增添lombok标签即可;

    注:

    • 1、勿忘刷新maven
    • 2、如果URL错误,可更换为以下URL(选择Gitee):

    Java工具包之Lombok使用

    Java工具包之Lombok使用

    3、使用此方法生成的dependency如下:

           android <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>

    是没有版本标识的;

    2.3 在java对象类中使用注解

    注解使用方法同第一种方法,详见方法1的2和3步骤;

    3. lombok工具使用结果查看

    3.1 手动package

    Java工具包之Lombok使用

    3.2 查看文件内容

    Java工具包之Lombok使用

    文件内容如下:

    //
    // Source code recreated from a .class file by IntelliJ IDEA
    // (powered by FernFlower decompiler)
    //
    
    package com.example.demo2.controller;
    
    import java.util.Date;
    
    public class MessageInfo {
        private String from;
        private String to;
        private String message;
        private Date CreateTime;
    
        public MessageInfo() {
        }
    
        public String toString() {
            return "MessageInfo(from=" + this.getFrom() + ", to=" + this.getandroidTo() + ", message=" + this.message + ", CreateTime=" + this.CreateTime + ")";
        }
    
        public String getFrom() {
            return this.from;
        }
    
        public void setFrom(String from) {
            this.from = from;
        }
    
        public String getTo() {
            return this.to;
        }
    
        public void setTo(String to) {
            this.to = to;
        }
    }

    对比原始文件:

    package com.example.demo2.controller;
    
    import lombok.Getter;
    import lombok.Setter;
    import lombok.ToString;
    
    import java.util.Date;
    
    @ToString
    public class MessageInfo {
        @Getter @Setter
        private String from;
        @Getter @Setter
        private String to;
        private String message;
        private Date CreateTime;
    }

    可见lombok在编译阶段生成了部分代码;

    注:此处虽然处于class目录下,但该文件并不是字节码文件,而是经过idea反编译的;

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号