現在、kotlinデータクラスを使用して、 @RestController を使用したクラスアノテーションで @RequestMapping アノテーション付きメソッドのパラメーターの数を減らそうとしています。また、同じパス変数を含む複数の @RequestMapping アノテーション付きメソッドで自分自身を繰り返したくありません。
以下のコードは、/multiple/ABC/true/123
期待どおりに動作する私のアプローチを示していますが/single/ABC/true/123
、デフォルトのコンストラクターが見つからないという不満があります。
data class Params(@PathVariable("param1") val param1: String,
@PathVariable("param2") val param2: Boolean,
@PathVariable("param3") val param3: Int)
@RestController
class TestController {
@RequestMapping("/single/{param1}/{param2}/{param3}")
fun single(params: Params) {
println(listOf(params.param1, params.param2, params.param3))
}
@RequestMapping("/multiple/{param1}/{param2}/{param3}")
fun multiple(@PathVariable("param1") param1: String,
@PathVariable("param2") param2: Boolean,
@PathVariable("param3") param3: Int) {
println(listOf(param1, param2, param3))
}
}
代わりに次のデータ クラス定義を使用すると、結果が得られますが、インスタンスは不変ではなくなり、一部のフィールドが更新されない可能性があります。
data class Params(@PathVariable("param1") var param1: String = "",
@PathVariable("param2") var param2: Boolean = false,
@PathVariable("param3") var param3: Int = 0)
最初のデータクラス定義を機能させるのを手伝ってくれる人はいますか?