[Kotlin] - 코프링에서 Validation 사용하기

728x90

자프링(=자바 + 스프링)진영에서는 외부의 요청을 검증하기 위해서 Validation을 많이 사용한다. 

의존성 설정만해두면... (몇 버전인지 기억이 잘 안나지만 스프링부트 특정 버전 이후부터는 Validation을 따로 추가해줘야한다... 그전에는 스프링부트에 자동으로 포함됐었다 😢)

Controller단에서는 DTO로 외부 요청을 받아오고 외부의 요청이 DTO에 할당되는 순간 Validation을 통해 검증이 진행된다. (순서가 정확한지는 모르겠다) 

자바에서는 DTO의 필드 위에 `@`로 시작되는 애너테이션을 붙여서 처리한다. 
그 사용법도 간단하고 애너테이션 각각의 네이밍이 직관적(@NotNull, @NotBlank, @Pattern, @Size etc..)이라 하나라도 사용을 해봤다면 다른 기능들도 충분히 응용하기 쉽다.

그런데 코프링 진영에서는 사용법이 조금 다르다. 실제로 필드위에 자바처럼 애너테이션을 붙여보면, 붙기는 잘 붙고 컴파일도 잘 된다. 
하지만 동작을 안한다.

그리고 코프링에서는 아래와 같이 Validation을 써야한다!  

잘보면 `@field: [기존 자프링의 애너테이션][() 안에서 속성 값 지정 ]` 의 형식이다. 
위의 예시를 보면 느낌이 오겠지만, 하나의 애너테이션당 하나의 @field:...로 처리가 됌을 알 수 있다. 

그렇다면... 왜 사용하는 방식이 다를까? 

코프링에서 어노테이션을 자프링처럼 걸면 생성자의 파라미터에 설정되는것이기 때문이다.
하지만 실제로 우리가 원하는건 필드(or Getter)에 Validation을 걸고 싶기 때문에 @field:를 명시해줘야 한다.
어노테이션을 다시 설정하고 실행해보면 정상적으로 동작하는 것을 알 수 있다.

728x90