validation 과정을 지원하는 웹 애플리케이션 형식을 만드는 과정에 대해 알아볼거다. 그러니까 해당 input이 유효한지, 안 유효한지를 알려주는 웹 애플리케이션 형식을 어떻게 만드는지 알아볼 것이다.
이 셋은 전부 Validation
이라는 package와 관련이 되어 있다. Spring Boot의 경우 Validation starter을 통해 이 annotation들 사용이 가능.
annotation이 매우 직관적인데, @NotNull
은 Null
을 허용하지 않는 annotation이다. 공백이나 empty string은 지원한다는 점 유의. 이와 연관된 annotation이 @NotEmpty
와 @NotBlank
가 있는데 링크 참고
@Size
는 최소/최대 크기를 동시에 지정할 때 사용되며 @Min
은 최소 크기만을 지정할 때 사용. @Max
는 최대 크기만을 지정할 때 사용.
이걸로 특정 값이 만족해야하는 조건을 설정하면, 조건에 맞는지 안 맞는지는 어떻게 확인을할까?
여기서 BindingResult
라는 class가 등장하게 된다. validation에 오류가 있을 경우, 해당 class에 관련 오류를 저장해놓는다. 생각보다 많은걸 할 수 있는데 자세한건 이 글 참고.
이 튜토리얼의 경우 해당 class를 어떻게 활용했냐면 코드에서는 단순히 에러가 있는지 없는지를 확인을 했으며, html 파일에서 오류가 있을 경우 무슨 오류가 있었는지를 출력하는데도 활용이 되고 있다. 후자의 경우 thymeleaf가 꽤 큰 역할을 하고 있다. (th:errors
부분이 error message를 출력하는 것과 관련이 되어 있음)
이번 튜토리얼에서 controller을 만드는 방식은 기존과 약간 다르다. 원래는 controller class를 딱히 무엇을 implement하거나 extend하는 것 없이 @Controller
annotation이 달린 애로 만들었다.
그러나 이번에는 @Controller
로 controller 역할 하는 class가 뭔지 지정은 했으나, WebMvcConfigurer
을 implement하는 형태로 구현을 했다. 이게 뭐냐면 spring의 MVC controller 관련 configuration을 조절하는 것이다.
WebMvcConfigurer
은 사실 Spring MVC model에 대한 configuration을 수정하는데 사용된다. 이 때문에 보통은 @Configuration
annotation이 implement한 class에 달려 있다. 하지만 여기는 그렇지 않고, @Controller
이라는 annotation이 달려있다. 이유는... 그냥 이 class가 controller을 나타내기 때문이다. 그러면 WebMvcConfigurer
은 왜 implement하는가? 그 이유는 spring MVC controller configuration을 좀 수정하고, 그걸 기반으로 동작하는 controller이라 그럴 뿐이다.