dto를 그냥 class를 사용하다 data class로 변경하면서 생긴 일이다.
data class로 바꾼 이후 동작을 확인하던 도중 validation Exception이 제대로 작동하지 않아 무슨 일인가 살펴보니
data class RequestTodoCardDto (
@NotNull(message = "boardId는 필수 입니다.")
val boardId: Long,
위와 같은 형태일 때 Null값이 아닌 대체 값으로 0이 들어오고 있었다.
이후 boardId를 null able 변수로 만들어 준 후 다시 실행하자, 이번에는 NullPointException이 발생하였다.
분명 Validation 과정에서 처리될 것이라 생각되었지만 처리되지 않았다.
그리하여 추가적으로 검색한 결과, 생성자가 아닌 필드에 Annotation을 붙여야 한다는 사실을 알게 되었다. 추가적으로 매개변수에 @NotNull은 아무 의미가 없다는 사실도 알게 되었다.
data class RequestTodoCardDto (
@field:NotNull(message = "boardId는 필수 입니다.")
val boardId: Long? = null,
@field:NotNull(message = "작성자는 필수 입니다.")
val writer: String? = null,
@field:NotNull(message = "내용은 필수 입니다.")
@field:Size(min = 1, max = 1000, message = "내용은 1자 이상 1000자 이하여야 합니다.")
val description: String? = null,
@field:NotNull(message = "제목은 필수 입니다.")
@field:Size(min = 1, max = 200, message = "제목은 1자 이상 200자 이하여야 합니다.")
val title: String? = null,
)
위와 같이 field를 붙여줌으로써 해결되었다.