0%

lombok汇总

@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
2
3
4
5
6
7
8
9
10
11
/**
* An annotation to create utility classes.
*
* If a class is annotated with {@code @UtilityClass}, the following things happen to it:<ul>
* <li>It is marked final.</li>
* <li>If any constructors are declared in it, an error is generated. Otherwise, a private no-args constructor is generated; it throws a {@code UnsupportedOperationException}.</li>
* <li>All methods, inner classes, and fields in the class are marked static.</li>
* <li><em>WARNING:</em> Do not use non-star static imports to import these members; javac won't be able to figure it out. Use either:
* <code>import static ThisType.*;</code> or don't static-import.</li>
* </ul>
*/

被@UtilityClass定义的类会被视为工具类,该类会被编译成final类型,同时生成一个私有的无参构造器,禁止被实例化,此外,该类的所有方法,内部类和变量都会被编程成静态类型。

@EqualsAndHashCode(callSuper = true)

@Data相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集。
通过官方文档,可以得知,当使用@Data注解时,则有了@EqualsAndHashCode注解,那么就会在此类中存在equals(Object other) 和 hashCode()方法,且不会使用父类的属性,这就导致了可能的问题。
加上callSuper = true表示需要使用父类的属性