From 695983bb8b92912173fff08bb0c4ad1a8da43d97 Mon Sep 17 00:00:00 2001 From: pricelees Date: Mon, 7 Jul 2025 02:07:24 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20sealed=20class=20=EB=8F=84=EC=9E=85?= =?UTF-8?q?=20=EB=B0=8F=20=EC=A4=91=EB=B3=B5=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sangdol/validation/DemoController.kt | 4 ++-- .../kotlin/com/sangdol/validation/DemoDTO.kt | 24 +++++++++++-------- .../com/sangdol/validation/DemoService.kt | 7 +----- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/main/kotlin/com/sangdol/validation/DemoController.kt b/src/main/kotlin/com/sangdol/validation/DemoController.kt index ac0d4ad..a133eae 100644 --- a/src/main/kotlin/com/sangdol/validation/DemoController.kt +++ b/src/main/kotlin/com/sangdol/validation/DemoController.kt @@ -22,7 +22,7 @@ class DemoController( @PostMapping("/wrapper") fun wrapper( - @RequestBody @Valid request: WrapperRequest + @RequestBody @Valid request: DemoRequest.WrapperRequest ): ResponseEntity { demoService.doSomething(request) @@ -31,7 +31,7 @@ class DemoController( @PostMapping("/primitive") fun primitive( - @RequestBody @Valid request: PrimitiveRequest + @RequestBody @Valid request: DemoRequest.PrimitiveRequest ): ResponseEntity { demoService.doSomething(request) diff --git a/src/main/kotlin/com/sangdol/validation/DemoDTO.kt b/src/main/kotlin/com/sangdol/validation/DemoDTO.kt index 5eb140c..c1ca7ca 100644 --- a/src/main/kotlin/com/sangdol/validation/DemoDTO.kt +++ b/src/main/kotlin/com/sangdol/validation/DemoDTO.kt @@ -3,19 +3,23 @@ package com.sangdol.validation import jakarta.validation.constraints.NotNull -data class WrapperRequest( - @NotNull - val withAnnotation: String, +sealed class DemoRequest { - val withoutAnnotation: String -) + abstract val withAnnotation: Any + abstract val withoutAnnotation: Any -data class PrimitiveRequest( - @NotNull - val withAnnotation: Int, + data class WrapperRequest( + @NotNull + override val withAnnotation: String, + override val withoutAnnotation: String + ) : DemoRequest() - val withoutAnnotation: Int -) + data class PrimitiveRequest( + @NotNull + override val withAnnotation: Int, + override val withoutAnnotation: Int + ) : DemoRequest() +} data class SolutionForPrimitive( @NotNull diff --git a/src/main/kotlin/com/sangdol/validation/DemoService.kt b/src/main/kotlin/com/sangdol/validation/DemoService.kt index daaa864..15794fc 100644 --- a/src/main/kotlin/com/sangdol/validation/DemoService.kt +++ b/src/main/kotlin/com/sangdol/validation/DemoService.kt @@ -14,13 +14,8 @@ class DemoService( request.value?.let { log.info { "value: ${request.value}" } } } - fun doSomething(request: WrapperRequest) { + fun doSomething(request: DemoRequest) { log.info { "wrapper requests: $request." } log.info { "withAnnotation: ${request.withAnnotation}, withoutAnnotation: ${request.withoutAnnotation}" } } - - fun doSomething(request: PrimitiveRequest) { - log.info { "primitive requests: $request." } - log.info { "withAnnotation: ${request.withAnnotation}, withoutAnnotation: ${request.withoutAnnotation}" } - } }