Springboot中引入lombok

https://projectlombok.org/

pom配置引入

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

同时,在Intellij IDE中添加lombok插件,如下图:
在这里插入图片描述

lombok中注解

  • @GETTER和@SETTER:
    用于给属性字段生成getter和setter方法
    PS:对于boolean字段,比如primary,对应生成的getter方法会是isPrimary而不是getPrimary
  • @NonNull
    如果一个field被标注了@NonNull注解,则生成的所在类的构造函数和该属性的set方法中,都会进行非空判断
	@NonNull
    String shopId;
    
    //对应生成的java source code中可以看到
    public class ActivityQueryForm {
    	@NonNull
    	String shopId;
    	String activityName;

    	ActivityQueryForm(@NonNull String shopId, String activityName) {
        	if (shopId == null) {
            	throw new NullPointerException("shopId is marked non-null but is null");
        	} else {
            	this.shopId = shopId;
            	this.activityName = activityName;         
        	}
    	}
    	public void setShopId(@NonNull String shopId) {
        	if (shopId == null) {
            	throw new NullPointerException("shopId is marked non-null but is null");
        	} else {
            	this.shopId = shopId;
        	}
    	}
    }
  • @ToString
    用于生成toString()方法。默认是会把非static的属性字段以key-value的方式输出。
    当然也支持在类上标注如下,不输出field字段:
	@ToString(includeFieldNames = false)
也可以设置某些字段不展示或只输出某些字段:
	@ToString(includeFieldNames = false)

  • @EqualsAndHashCode
    生成*equals()hashCode()*方法。
    用法和@ToString注解有点类似:
	@EqualsAndHashCode(callSuper=true,exclude=	{"address","city","state","zip"})
  • @Data
    这个注解囊括了@ToString, @EqualsAndHashCode, @Getter and @Setter这四个注解的功能。
    另外,会把final或者被标注了@NonNull的属性字段作为参数,生成对应的构造函数。
    如果,在类上注解如下,则会使得生成的构造函数为private,同时提供一个public的静态工厂:
	@Data(staticConstructor="of")
	
	//java source code如下
	private Company(final Person founder) {
        this.founder = founder;
    }
 
    public static Company of(final Person founder) {
        return new Company(founder);
    }
  • @Cleanup
    被标注了@Cleanup的本地变量,其实是会被try catch,以确保该资源被释放:
	public void testCleanUp() {
	    try {
	        @Cleanup ByteArrayOutputStream baos = new ByteArrayOutputStream();
	        baos.write(new byte[] {'Y','e','s'});
	        System.out.println(baos.toString());
	    } catch (IOException e) {
	        e.printStackTrace();
	    }
	}

	//Java source code如下
	public void testCleanUp() {
	    try {
	        ByteArrayOutputStream baos = new ByteArrayOutputStream();
	        try {
	            baos.write(new byte[]{'Y', 'e', 's'});
	            System.out.println(baos.toString());
	        } finally {
	            baos.close();
	        }
	    } catch (IOException e) {
	        e.printStackTrace();
	    }
	}
  • @Synchronized
    被注解的方法以如果是实体类方法,则以this作为锁对象;如果是个静态方法,则以类对象作为锁对象。
  • @SneakyThrows

总结

Lombok可以通过一个注解消除很多重复代码,比如getter和setter。但是不是说这个插件就没有缺点了。有兴趣的可以去看看issue list

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值