kotlin と @Valid Spring アノテーション 質問する

kotlin と @Valid Spring アノテーション 質問する

エンティティがあります:

class SomeInfo(
        @NotNull @Pattern(regexp = Constraints.EMAIL_REGEX) var value: String) {
    var id: Long? = null
}

コントローラーメソッド:

@RequestMapping(value = "/some-info", method = RequestMethod.POST)
public Id create(@Valid @RequestBody SomeInfo someInfo) {
       ...
    }

@Valid注釈が機能しません。

Spring にはデフォルトのパラメータなしのコンストラクターが必要なようで、上記の凝ったコードは次のように醜いものになります (ただし動作​​します)。

class SomeInfo() {

    constructor(value: String) {
            this.value = value
        }

        @NotNull @Pattern(regexp = Constraints.EMAIL_REGEX) 
        lateinit var value: String

        var id: Long? = null
    }

言葉を減らすための良い方法はありますか?

ありがとう。

ベストアンサー1

Spring では、これらのアノテーションをフィールドに適用する必要があるようです。ただし、Kotlin では、これらのアノテーションをコンストラクター パラメーターに適用します。field:アノテーションをフィールドに適用するには、指定子を使用します。次のコードは問題なく動作するはずです。

class SomeInfo(
    @field:NotNull
    @field:Pattern(regexp = Constraints.EMAIL_REGEX)
    var value: String
) {
    var id: Long? = null
}

おすすめ記事