Spring Boot学习笔记(六)——Lombok篇


前提

这篇博文是这套Spring Boot学习笔记的第六篇——Lombok篇,主要内容包含通过Lombok工具减少实体类中的工作量。如果需要了解有关Spring Boot的综述信息或博文的索引信息,请移步:
《综述篇》


配置依赖

首先需要在pom.xml中添加以下依赖:

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

安装插件

由于Lombok采用了编译期解析的技术,所以在调试期调用相应的方法IDE会报错,所以必须安装插件。

  • 通过File -> Settings打开设置界面。
  • 点击Plugins进入插件选项卡。
  • 在上方的搜索框输入Lombok,结果中第一个就是,点击Install即可。
    安装Lombok插件

常用注解介绍

Lombok主要包含许多注解,通过合理的使用,可以大幅度减少开发的工作量,最适合在POJO中使用。

@Data

类注解,最常用的注解之一,功能强大。为被注解的类的属性生成setter/getterequalscanEqualhashCodetoString等方法,对于final属性,则不会为其生成setter方法。

由于@Data注解的功能粒度太大,其功能可以被以下的注解来分解:

  • @Getter@Setter:用于独立指定生成gettersetter
  • @EqualsAndHashCode:用于生成equalshashCode方法。
    • 默认使用非静态(static)和非瞬态(transient)字段生成。
    • 可使用exclude属性排除一些字段。
    • 可使用of属性指定只用某些字段。
    • 默认不调用父类的方法,可使用callSuper = true来使其生成的方法调用父类的方法。
  • @ToString:用于生成toString方法。
    • 举例说明,如以下的类:
	@Getter @Setter @ToString
	public class User {
    
    
    	private int id;
    	private String name;
	}

构造一个对象并调用toString

    public static void main(String[] args) {
    
    
        User user = new User();
        user.setId(1);
        user.setName("Imple");
        System.out.println(user.toString());
    }

输出如下:

User(id=1, name=Imple)
  • @ToString同样有excludeofcallSuper等属性,作用和@EqualsAndHashCode的类似。

@NoArgsConstructor

生成无参构造方法,如:

扫描二维码关注公众号,回复: 14978880 查看本文章
	public class User {
    
    
    	private int id;
    	private String name;

		public User(){
    
    }
	}

@AllArgsConstructor

生成全参构造方法,如:

	public class User {
    
    
    	private int id;
    	private String name;

		public User(int id, String name){
    
    
			this.id = id;
			this.name = name;
		}
	}

@Builder

建造者模式,为类生成Builder内部类,创建对象的示例:

	User user = new UserBuilder()
	    .id(1)
        .name("Imple")
        .build();

@Cleanup

自动调用对象的close方法,也即目标类必须实现AutoCloseable接口。作用相当于try-with-resources,但是选用注解会让代码看起来更加整洁。

@NonNull

方法参数注解,如果加了注解的参数被传入了null,会抛出空指针异常。

@Slf4j

日志类注解还有很多哦,基本上是与市面上的日志框架对等的,使用哪个根据工程中的配置和依赖。它的作用相当于:

	private  final Logger log = LoggerFactory.getLogger(当前类名.class);

加上注解后可以直接在代码中调用log对象来输出日志。


后记

可以看到Lombok的开发者相当于做了个大的抽象,把程序中具有一定格式或模式的代码抽象到对应的注解当中,尽最大可能帮助我们来减少编码的工作量。由此我有一个有趣的想法,这些场景都比较符合具有横切逻辑的场景的定义,Lombok这样是不是一定程序上抢了AOP的饭碗了呢?哈哈。

猜你喜欢

转载自blog.csdn.net/Mr_Megamind/article/details/102869327