@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"); } }