Spring
[Spring Boot] Kotlin+Spring Boot Validation
cheery7272
2022. 12. 22. 16:50
Java11에서는 build.gradle에
implementation 'org.springframework.boot:spring-boot-starter-validation'
라이브러리를 추가하면 @NotBlank, @NotNull, @NotEmpty 어노테이션을 사용할 수 있다.


그 후 요청에 @Valid라는 어노테이션을 사용하면 검증이 가능하게 된다.

@NotBlank는 설정됐을때는 trim() 메소드로 공백이 모두 삭제되기 때문에
null일때와 "", " " ," " 등 문자열이 들어와야 유효성 검사가 통과될 수 있다.


위와 같이 ""을 보낼때 400에러가 뜨는것을 확인 할 수 있다.
그렇다면 Kotlin에서는 Validation을 어떻게 진행할까?
implementation("org.springframework.boot:spring-boot-starter-validation:2.7.5")
라이브러리를 추가하면

위와 같이 @NotBlank 어노테이션을 사용할 수 있다.



하지만 위와 같이 빈 문자열을 보냈을 때 유효성 검사을 진행하지 않는다..
공식문서에서 Validation을 진행할때 @field:를 사용하는것을 확인할 수 있었다.


@NotBlank를 사용한 유효성 검증은 통과 되었다.
하지만 @NotNull일때의 유효성 검증을 진행하지 않는다.



null로 보낸 요청이 실제로 들어왔을때는 0으로 할당된다.
이유는 Kotlin에서는 null을 허용하지 않는 변수들은 Primitive type으로 구분되고
nullable한 변수는 wrapper type 으로 구분이 된다.
Primitive type일 경우 null 값이 들어왔을 경우 컴파일러가 default value값을 주게 된다.


그렇기에 nullable하게 만들게 된다면 가능하다.