集成
-
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的读写方法