@Jacksonized
Bob,认识一下 Jackson。我们来确保你们成为好朋友。
@Jacksonized 作为实验性功能在 lombok v1.18.14 中引入。
概述
@Jacksonized 注解是为 @Builder 和 @SuperBuilder 提供的附加注解。它会自动配置生成的 builder 类,以便 Jackson 的反序列化可以使用它。只有当上下文中存在 @Builder 或 @SuperBuilder 时,它才会生效;否则会发出警告。
如果没有 @Jacksonized,您将不得不自定义您的 builder 类。 使用 @Jacksonized,您可以简单地编写如下内容,让 Jackson 使用生成的 builder
@Jacksonized @Builder
@JsonIgnoreProperties(ignoreUnknown = true)
public class JacksonExample {
private List<Foo> foos;
}
此注解不会更改生成的 builder 的行为。 @Jacksonized @SuperBuilder 仍然与常规 @SuperBuilder 完全兼容。
小字说明
具体来说,该注解执行以下操作
- 配置 Jackson 使用 builder 进行反序列化,方法是在类上使用
@JsonDeserialize(builder=Foobar.FoobarBuilder[Impl].class))(其中 Foobar 是被注解的类的名称,Impl是为@SuperBuilder添加的)。 (如果此类注解已存在,则会发出错误。) - 将 Jackson 相关的配置注解(例如
@JsonIgnoreProperties)从类复制到 builder 类。 这是必要的,以便 Jackson 在使用 builder 时识别它们。 - 在生成的 builder 类上插入
@JsonPOJOBuilder(withPrefix="")以覆盖 Jackson 的默认前缀 "with"。 如果您在 lombok 中使用setterPrefix配置了不同的前缀,则将使用此值。 如果您使用buildMethodName更改了build()方法的名称,也会告知 Jackson。 - 对于
@SuperBuilder,使 builder 实现类为包私有。