brunch

매거진 SW개발

You can make anything
by writing

C.S.Lewis

by 김민석 Nov 06. 2018

@ModelAttribute

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를 써서 받는다.


매거진의 이전글 책 리뷰 - 이것이 자바다
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari