lombok使用笔记

Lombok

作用:帮使用者提高编码效率,减少重复与冗余的代码

原理:ASM 动态修改class文件

     <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.8</version>
    </dependency>

     <build>
      <plugins>
          <plugin>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok-maven-plugin</artifactId>
              <version>1.16.6.1</version>
          </plugin>
      </plugins>
    </build>

@Setter

@Getter

@ToString

@Getter(lazy = true)   //懒加载

private final List<Integer> ids = Arrays.asList(1, 2, 3, 4); private String name;

@EqualsAndHashCode    //生成equals方法与hashCode方法

public class LombokDemo

@NoArgsConstructor   //添加一个无参构造函数

@AllArgsConstructor 添加一个所有参数的构造函数

扫描二维码关注公众号,回复: 13120099 查看本文章

@RequiredArgsConstructor   //生成一个包含必填参数的构造函数,要与@NonNull 搭配使用,该注解修饰的属性就是必填参数

public class LombokDemo {

@NonNull private Integer id; private String name;

}

@Data

这是一个综合注解了,等于同时使用

@Getter@Setter@ToString@EqualsAndHashCode,@RequiredArgsConstructor

@Value

创建不变类

扩展:不可变类是指创建该类的实例后,该实例的实例变量是不可改变的。Jav提供的8个包装类和java.lang.String类都是不可变类。

@Accessors

这个注解要搭配@Getter与@Setter使用,用来修改默认的setter与getter方法的形式

日志相关 

@Log4j

public class LombokDemo {

private static final Logger log = Logger.getLogger(LombokDemo.class);

@Slf4j

public class LombokDemo {

private static final Logger log = LoggerFactory.getLogger(LombokDemo.class);

设计模式相关

@Builder   //通过建造者模块来生成bean

@Builder
public class LombokDemo {

  private Integer id;
  private String name;
}

扩展:

建造模式:

在开发过程,有的时候会出现一个复杂对象的创建工作,这个对象一般组装模式固定,但是其中的参数会变

builder.installOS("CentOS").installLanguage("Java").installServer("Tomcat").installDatabase("Mysql");

@Delegate注释的属性,会把这个属性对象的公有非静态方法合到当前类

public class LombokDemo {

  @Delegate
  private Integer id;
  private String name;
}

举例:

  public short shortValue() {
      return this.id.shortValue();
  }

  public int intValue() {
      return this.id.intValue();
  }

工具相关:

给方法加一个同步块

  @Synchronized
  public void test() throws IOException {

      System.out.println("test");

  }

设置不能为空的参数

  public void test(@NonNull String val) {

  }
 

猜你喜欢

转载自blog.csdn.net/qq_24271537/article/details/115415326