集成
- IDE安装Plugins插件=>lombok
- 添加maven依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
使用
基本用来简化pojo使用@Data注解即可满足
- @Data注解于类
相当于同时使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstrutor注解 - @Getter/@Setter注解于类
为所有成员变量生成getter/setter - @Getter/@Setter注解于成员变量
为该成员变量生成getter/setter并且可以设置访问权限和懒加载
//lazy = true替代经典的Double Check Lock样板代码
@Getter(value = AccessLevel.PRIVATE, lazy = true)
@Setter(value = AccessLevel.PRIVATE)
- @EqualsAndHashCode注解于类
覆盖默认的equals()和hashCode() - @NonNull注解于成员变量
标识不能为空,为空抛出空指针异常 - @NoArgsConstructor注解于类
生成无参构造函数 - @RequiredArgsConstructor注解于类
生成final和@NonNull的成员变量的构造函数 - @AllArgsConstructor作用于类
生成全参构造函数 - @Builder作用于类
将类变为建造者模式 - @Log作用于类
生成日志变量 - @Cleanup InputStream is = new FileInputStream(new File(“”"));
自动关闭资源 - @SneakyThrows作用于方法
捕捉并抛出受检异常,消除样板代码,用例如下;
@SneakyThrows(UnsupportedEncodingException.class)
public String utf8ToString(byte[] bytes) {
return new String(bytes, "UTF-8");
}
- @Synchronized注解于方法
替换Synchronized关键字或lock锁
优缺点
- 优点
- 使用注解极大减少代码量
- 缺点
- 要求队友也要安装IDE插件
- 降低代码可读性,增加调试成本
- jdk或者IDE升级或者版本不一致可能会有影响
- 需要清楚知道各个注解的具体操作
- 如使用了@Data则破坏了封装性,因为会给私有属性自动生成public的读写方法