私は、ロンボクの新しいの使用作るしようとしているcopyableAnnotations
ようジャクソンの注釈を持つために機能を@JsonIgnore
し、@JsonValue
生成されたゲッター/枯れ方法にコピー。:このブログは、これは動作するはず示唆しているようだhttps://www.thecuriousdev.org/lombok-builder-with-jackson/を。(私を指している:「宣言のこの種に適用できない注釈型エラー」しかし、私はこれをしようとすると、私は単純に取得value
フィールド)。なぜこれが動作していないとどのように私はそれを動作させるのですか?おそらく、私はこの機能が動作するようになっているか誤解しています。私はロンボク1.18.8を使用しています。
model.java:
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Value;
import javax.validation.constraints.NotNull;
@Value
public class BrandId implements ValueObject<Long> {
@JsonCreator
public static BrandId of(final Long value) {
return new BrandId(value);
}
@NotNull
@JsonValue
private Long value;
}
lombok.config:
config.stopBubbling = true
lombok.copyableAnnotations += com.fasterxml.jackson.annotation.JsonIgnore
lombok.copyableAnnotations += com.fasterxml.jackson.annotation.JsonProperty
lombok.copyableAnnotations += com.fasterxml.jackson.annotation.JsonValue
なぜこれが[...]機能していませんか?
@JsonValue
注釈のみメソッド宣言に及び他の注釈型の宣言で許可されています。そう、ロンボク島の有無にかかわらず、あなたはフィールド上にそれを置くことはできません。(あなたが見ればそののJavadoc、あなたはそれがで注釈さだということがわかります@Target(value={ANNOTATION_TYPE,METHOD})
。)
良いニュースは、ということです@JsonValue
、それは単に手動で、1つのゲッターを作成するために、大したことではないですのでだけは、getterメソッド(ないsetterメソッド、ビルダー方法、など)に適用され、クラスごとに、それの1つだけになります
@NotNull
private Long value;
@JsonValue
public Long getValue() {
return value;
}
あなたが本当にそれを嫌う場合は、ロンボクの実験に使用できるonMethod
機能を:
@NotNull
@Getter(onMethod=@__({@JsonValue}))
private Long value;
これは(それが変更またはロンボクおよび/またはJavaの将来のバージョンで消えることに)実験ことを除いて上記と同等です。