@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 实现类为包私有。