@SneakyThrows是否可以大量使用?
不建议大量使用,异常还是要研究地做好各种catch和处理,在单元测试中为了效率可以使用。
@AllArgsConstructor
生成所有成员变量的有参构造器,同时因为Spring的新特性:
In the newest Spring release, it’s constructor does not need to be annotated with @Autowired annotation.
所以成员变量会被自动注入。
要注意的是,如果bean中有多个构造器的话,那么就要声明@Autowired给其中一个构造器,不然Spring不会默认去选择构造器。
@RequiredArgsConstructor
Required arguments are final fields and fields with constraints such as {@code @NonNull}.
RequiredArgsConstructor是针对final成员变量去生成有参构造器。
@UtilityClass
1 | /** |
被@UtilityClass定义的类会被视为工具类,该类会被编译成final类型,同时生成一个私有的无参构造器,禁止被实例化,此外,该类的所有方法,内部类和变量都会被编程成静态类型。
@EqualsAndHashCode(callSuper = true)
@Data相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集。
通过官方文档,可以得知,当使用@Data注解时,则有了@EqualsAndHashCode注解,那么就会在此类中存在equals(Object other) 和 hashCode()方法,且不会使用父类的属性,这就导致了可能的问题。
加上callSuper = true表示需要使用父类的属性