ロンボク島のlombok.copyableAnnotationsはジャクソンの注釈で作業していません

fugigoose:

私は、ロンボクの新しいの使用作るしようとしている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
ruakh:

なぜこれが[...]機能していませんか?

@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の将来のバージョンで消えることに)実験ことを除いて上記と同等です。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=214083&siteId=1