註解類型 Jacksonized


@Target({TYPE,METHOD,CONSTRUCTOR}) @Retention(SOURCE) public @interface Jacksonized
@Jacksonized 註解是 @Builder@SuperBuilder 的附加註解。它會自動配置產生的 builder 類別,以便 Jackson 的反序列化使用。只有在同時存在 @Builder@SuperBuilder 的情況下才會生效;否則會發出警告。

具體來說,此註解會執行以下操作

  • 配置 Jackson 以使用 builder 進行反序列化,方法是在類別上使用 @JsonDeserialize(builder=Foobar.FoobarBuilder[Impl].class) (其中 Foobar 是被註解的類別名稱)。
  • 將 Jackson 相關的配置註解 (例如 @JsonIgnoreProperties) 從類別複製到 builder 類別。這是必要的,以便 Jackson 在使用 builder 時能夠識別它們。
  • 在產生的 builder 類別上插入 @JsonPOJOBuilder(withPrefix=""),以覆寫 Jackson 的預設前綴 "with"。如果您在 lombok 中使用 setterPrefix 配置了不同的前綴,則會使用此值。如果您使用 buildMethodName 變更了 build() 方法的名稱,這也會告知 Jackson。
  • 對於 @SuperBuilder,使 builder 實作類別成為 package-private。
此註解不會變更產生的 builder 的行為。@Jacksonized @SuperBuilder 仍然與常規的 @SuperBuilder 完全相容。