SpringMVC
@ModelAttribute 용도
SpringMVC에서 controller로 클라이언트(웹브라우저)가 도메인 모델(즉 복잡한 객체)를 넘겨줄 때 @RequestParam으로 일일이 받을 필요 없고 스프링에서 알아서 변환해서 도메인 모델 객체로 바인딩 시켜준다.
Validation
스프링에서 @ModelAttribute로 자동 바인딩 할 때 각 필드 변수별로 검증 작업을 할 수 있다. 예를 들어 email을 형식대로 넘어왔는지 확인할 수 있다.
BindingResult
BindingResult를 ModelAttribute 인자 받을 때 인자로 같이 받으면 validation 수행 중 발생하는 문제를 스프링이 BindingResult에 같이 담아준다. BindingResult 인자가 없으면 바인딩 시 문제 생길 때 예외가 발생한다. BindingResult 인자는 무조건 ModelAttribute 인자 뒤에 나와야함.
@RequestBody
GET/POST 로 argument를 여러개 넘겨서 modelAttribute로 받을 때도 있지만 JSON 형식으로 값을 여러개 넘기 때 유용한 annotation이 @RequestBody다. SpringMVC는 json 형식의 복잡한 객체를 인자에 @RequestBody를 붙여 놓으면 자동으로 변환을 해준다.
복잡한 객체를 클라이언트로부터 받을 때
- 파라메터로 여러개 받을 경우에는 @ModelAttribute를 사용해서 도메인모델로 한방에 받는다.
- json 형식으로 객체를 받고 싶은때는 인자에 @RequestBody를 써서 받는다.