当前位置: 代码网 > it编程>编程语言>Java > Java工具包之Lombok使用

Java工具包之Lombok使用

2024年09月05日 Java 我要评论
在spring项目中创建java对象,如果使用手动生成getter、setter、tostring等方法提供调用接口,会导致代码修改成本与复杂度大大增加;lombok是一个java工具库,通过添加注解

在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面板中进行刷新:

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.example.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插件

安装完后重启idea方可生效

2.2 在pom.xml中进行操作

直接增添lombok标签即可;

注:

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

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

        <dependency>
            <groupid>org.projectlombok</groupid>
            <artifactid>lombok</artifactid>
            <optional>true</optional>
        </dependency>

是没有版本标识的;

2.3 在java对象类中使用注解

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

3. lombok工具使用结果查看

3.1 手动package

3.2 查看文件内容

文件内容如下:

//
// 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.getto() + ", 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反编译的;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com