bean中的链式风格
关键词@Accessors
最佳实践
@Accessors(chain = true)
@Data
public class User {
private Long id;
private String name;
private int age;
}
@Test
public void test() {
User user = new User();
user.setId(1L).setAge(2).setName("Zhangsan");
}
静态构造方法
构造参数为空的最佳实践
@Accessors(chain = true)
@Data
@RequiredArgsConstructor(staticName = "of")
public class User {
private Long id;
private String name;
private int age;
}
@Test
public void testConstructor() {
User user = User.of().setId(1L).setAge(2).setName("Zhangsan");
}
构造参数为name的最佳实践
@Accessors(chain = true)
@Data
@RequiredArgsConstructor(staticName = "of")
public class User {
private Long id;
@NonNull
private String name;
private int age;
}
@Test
@Test
public void testConstructorOfName() {
User user = User.of("Zhangsan").setId(1L).setAge(2);
System.out.println(user);
}
Builder模式
@Builder
public class User {
private Long id;
private String name;
private int age;
}
@Test
public void testBuilder() {
User user = User.builder().id(1L).age(2).name("Zhangsan").build();
}
更多 lombok 注解
lombok 目前最新版本为 1.16.8,个人觉得比较常用的有以下几种,更多请查看官网。
@val
如果你要定义一个final的变量,并且不想写类型,这个可以帮到你。但是,在实际项目中,完全没有使用到。@NonNull
这个在参数中使用,如果调用时传了null,就直接抛空指针。@Data
@ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstructor注解的集合。@Getter与@Setter
作用于属性和类上,自动生成属性的getXXX()和setXXX()方法。若在类上,则对所有属性有效。并可通过AccessLevel参数控制方法的访问级别。@ToString
作用于类,自动重写类的ToString()方法。常用的参数有exclude(指定方法中不包含的属性)、callSuper(方法中是否包含父类ToString()方法返回的值)@EqualsAndHashCode
作用于类,自动重写类的equals()、hashCode()方法。常用的参数有exclude(指定方法中不包含的属性)、callSuper(方法中是否包含父类ToString()方法返回的值)@NoArgsConstructor, @RequiredArgsConstructor和@AllArgsConstructor
作用于类,@NoArgsConstructor自动生成不带参数的构造方法;@RequiredArgsConstructor自动生成带参数的构造方法,主要针对一些需要特殊处理的属性,比如未初始化的final属性;@AllArgsConstructor自动生成包含所有属性的构造方法。@Synchronized
作用于方法,可锁定指定的对象,如果不指定,则默认创建创建一个对象锁定。@Log,或者直接@Slf4j
作用于类,具体包含@CommonsLog、@Log、@Log4j、@Log4j2、-
@Slf4j和@XSlf4j,分别对用不同的日志系统。利用此类注解,可为类创建一个log属性。