Springboot中加入Lombok

xiaoxiao2021-02-28  60

近段时间发现Lombok这个小框架,可以大大的减少实体的代码量,最显而易见的是实体类的getter、setter不用写了,虽然ide也有快捷键来生成,但是毕竟还是需要手动操作,而且改字段名、添加字段名的时候又要删除再添加甚是麻烦,加入Lombok就不一样了。 首先看一下它的效果: 这样就好了。getter、setter、tostring、equals、hashcode就都有了。是不是很简单 @Data该注解相当于同时加上以下注解@Setter @Getter,@ToString,@EqualsAndHashCode 下面是介绍: 一、Maven添加依赖

<!-- lombok setter getter 标签 --> <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId>s </dependency>

二、lombok使用

lombok使用过程中主要是靠注解起作用的,官网上的文档里面有所有的注解,这里不一一罗列,只说明其中几个比较常用的。

@NonNull: 可以帮助我们避免空指针。

使用lombok:

import lombok.NonNull; public class NonNullExample extends Something { private String name; public NonNullExample(@NonNull Person person) { super("Hello"); this.name = person.getName(); } }

不使用lombok:

public class NonNullExample extends Something { private String name; public NonNullExample(@NonNull Person person) { super("Hello"); if (person == null) { throw new NullPointerException("person"); } this.name = person.getName(); } }

@Cleanup: 自动帮我们调用close()方法。

使用lombok:

public class CleanupExample { public static void main(String[] args) throws IOException { @Cleanup InputStream in = new FileInputStream(args[0]); @Cleanup OutputStream out = new FileOutputStream(args[1]); byte[] b = new byte[10000]; while (true) { int r = in.read(b); if (r == -1) break; out.write(b, 0, r); } } }

不使用lombok:

public class CleanupExample { public static void main(String[] args) throws IOException { InputStream in = new FileInputStream(args[0]); try { OutputStream out = new FileOutputStream(args[1]); try { byte[] b = new byte[10000]; while (true) { int r = in.read(b); if (r == -1) break; out.write(b, 0, r); } } finally { if (out != null) { out.close(); } } } finally { if (in != null) { in.close(); } } }

@Getter / @Setter: 自动生成Getter/Setter方法

使用lombok:

public class GetterSetterExample { @Getter @Setter private int age = 10; @Setter(AccessLevel.PROTECTED) private String name; }

不使用lombok:

public class GetterSetterExample { private int age = 10; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } protected void setName(String name) { this.name = name; } }

@NoArgsConstructor: 自动生成无参数构造函数。

@AllArgsConstructor: 自动生成全参数构造函数。

@Data: 自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字段添加@Setter,和@RequiredArgsConstructor!

代码层面的都介绍好了,使用的话IDEA还是需要安装一个插件的,否则会找不到方法; 如下图: 同时设置 Setting -> Compiler -> Annotation Processors -> Enable annotation processing勾选。

转载请注明原文地址: https://www.6miu.com/read-2632521.html

最新回复(0)