lombok的导入问题及其常用注解

发布时间:2023年12月28日

lombok的作用

普通对象中,往往有着很多的属性,lombok带来了很多注解,可以简化代码开发,减少了大量set,get方法的书写。

pom坐标的导入

在pom.xml文件中,添加以下依赖坐标:

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

此时,刷新maven依赖出现异常:Unresolved dependency: 'org.projectlombok:lombok:jar:unknown'。

解决思考:

1、是否没有安装Lombok 插件?

在idea -> settings -> plugins中检查发现已安装,排除该问题

2、是否未添加版本号的问题,导致无法导入

后续添加版本号后,lombok导入成功(网上很多坐标导入没有引入版本号,需注意)

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

3、解决中发现的问题

在无版本号时,选择添加<parent>,指定了Spring Boot启动器的父项目后也可以加载lombok成功,具体原因猜测是spring-boot-starter-parent中存在lombok,会自动匹配版本号

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.4.RELEASE</version>
</parent>

常见注解

@Getter:

  • 自动生成 getter 方法

@Setter:

  • 自动生成setter方法

@Data:

  • 自动生成 getter 和 setter 方法。
  • 自动生成 equals、hashCode 和 toString 方法。

其中对toString方法进行测试:

public class Student {
    private String name;
    private Long age;
}


public class JSONParseObject {
    public static void main(String[] args) {
        String st = new Student().toString();
        System.out.println("student对象为:" + st);
    }
}
  • 当不添加@Data注解时,输出student对象为:json.parseObject.Student@452b3a41。添加注解后,输出student对象为:Student(name=null, age=null)

@NoArgsConstructor:

  • 得到一个无参的构造器,方便实例化对象时无需传入参数

@AllArgsConstructor:

  • 得到一个包含全部参数的构造器

当同时存在@NoArgsConstructor、@AllArgsConstructor时,new新建对象时,会自动匹配

public class JSONParseObject {
    public static void main(String[] args) {
        String st1 = new Student().toString();
        System.out.println("student1对象为:" + st1);
        Student st2 = new Student("名字", 23);
        System.out.println("student2对象为:" + st2);
    }
}

当存在@Data注解时,输出结果为:
student1对象为:Student(name=null, age=0)
student2对象为:Student(name=名字, age=23)
文章来源:https://blog.csdn.net/hahaha_2568/article/details/135224606
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。