M87星云

导航

Lombok常用注解

@Setter 生成对象属性set方法
@Getter 生成对象属性get方法
@Getter(AccessLevel.NONE) 不生成对象属性get方法
@Getter(AccessLevel.PROTECTED) 控制访问权限

@NonNull 作用于方法上或者属性,用于非空判断,如果为空则抛异常

@NoArgsConstructor 生成无参构造器

@AllArgsConstructor 生成全参构造器

@RequiredArgsConstructor 指定参数的构造函数
@RequiredArgsConstructor
public class User {

    private Integer age;
    private int salary;

    @NonNull
    private String address;

}

@ToString 作用于类,覆盖默认的toString()方法
@ToString(exclude = {"age"}) 不包括某个字段
@ToString(of = {"name"}) 只输出某个字段

@EqualsAndHashCode 作用于类,覆盖默认的equals和hashCode, 作用于全部属性
@EqualsAndHashCode(exclude = {"age"}) 不包括某个属性
@EqualsAndHashCode(of = {"name"}) 只输出某个属性

@Data 作用于类上,是以下注解的集合
  • @ToString
  • @EqualsAndHashCode
  • @Getter
  • @Setter
  • @RequiredArgsConstructor
 /** 
 * @see Getter
 * @see Setter
 * @see RequiredArgsConstructor
 * @see ToString
 * @see EqualsAndHashCode
 * @see lombok.Value
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface Data {}

 

@Builder 作用在类上,建造者模式创建对象,实现链式调用赋值

构造者模式:又称之为建造者模式

  • 场景:当一个bean类重载了多个构造方法时,并且参数随机使用时,考虑使用构造者模式
  • 谷歌的开源的protobuf协议生产的java bean赋值就是采用建造者模式

使用案列:

@Data
@Builder
public class User2 {

    private Integer id;
    private String name;

}
//建造者模式创建对象,实现链式调用赋值
User2 boat = User2.builder().id(1).name("boat").build();
System.out.println(boat);

 

@Log / @Slf4j  作用于类上,生成日志变量, 用于记录日志(可以选择使用)

如果不生效,记得检查下面的配置,另外重新更新下lombok插件,重启idea

记得开启 开启annotion processing 

步骤:File 》Settings 》 Build, Execution, Deployment 》 Compiler 》 Annotation Processors

 使用案列:

@Slf4j
public class MyService {
    public void show(){
        log.info("打印手机:{}","13539588064");
    }
}

生产的字节码:

public class MyService {
    private static final Logger log = LoggerFactory.getLogger(MyService.class);

    public MyService() {
    }

    public void show() {
        log.info("打印手机:{}", "13539588064");
    }
}

 

posted on 2021-09-25 20:52  挽留匆匆的美丽  阅读(372)  评论(0编辑  收藏  举报