毎回調べているような気がするのでメモ。
Lombok+Jackson(Spring MVCやJerseyなどで使ってたり)を使っている場合に、@JsonIgnore
で一部のフィールドを対象外にしたい場合に、privateなフィールドに設定してもうまく動きません。
Lombokで生成したsetterまたはgetterに設定してあげる必要があり、下記のような書き方をします。(java - @JsonIgnore with @Getter Annotation - Stack Overflowより引用)
@Getter @Setter public class User { private userName; @Getter(onMethod = @__(@JsonIgnore)) @Setter private password; }
ちょっと特殊な書き方なので、いつも忘れます…
なお、Lombokで生成されたメソッドに対してアノテーションを指定する方法は、下記の3パターンになります。
- 生成されるメソッドに対して:
@Setter(onMethod = @__(@ExampleAnnotation))
- 生成されるメソッドの引数に対して:
@Setter(onParam = @__(@ExampleAnnotation))
- 生成されるコンストラクタに対して:
@AllArgsConstructor(onConstructor = @__(@ExampleAnnotation))
Lombokのドキュメントだと、下記に記載があります。