SpringBoot中使用lombok

147 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

集成

  1. IDE安装Plugins插件=>lombok

  2. 添加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锁

优缺点

  1. 优点

    • 使用注解极大减少代码量
  2. 缺点

    • 要求队友也要安装IDE插件
    • 降低代码可读性,增加调试成本
    • jdk或者IDE升级或者版本不一致可能会有影响
    • 需要清楚知道各个注解的具体操作
    • 如使用了@Data则破坏了封装性,因为会给私有属性自动生成public的读写方法