@RequestParam
요청 파라미터를 연결할 매개변수에 붙이는 어노테이션이다.
해당 어노테이션을 생략할 경우에는 required = false가 되어 필수입력하지 않아도 되고, 붙일 경우에는 required = true가 되어 요청할 때에 매개변수를 붙여주지 않게 되면 400번대 에러(클라이언트 에러)가 발생한다.
만약 요청 시 아무런 값을 주지 않으면 null 값이 되는데 null값은 int형에 담길 수 없기 때문에 500번대 에러(서버 에러)가 발생한다. 따라서 이러한 경우를 방지하기 위해 defaultValue를 통해 기본값을 지정해준다.
※ 기본형과 String형일 경우 이 @RequestParam 이 생략된 것과 같다.
@ModelAttribute
적용 대상을 Model의 속성으로 자동 추가해주는 어노테이션이다. 반환 타입 혹은 컨트롤러 메서드의 매개변수에 붙여 사용한다.
해당 어노테이션을 붙여주게 되면 model.addAttribute()와 같은 코드를 통해 저장할 필요가 없고, 반환에 호출 또한 필요없게 된다.
※ 참조형일 경우 이 @ModelAttribute 가 생략된 것과 같다.
WebDataBinder
요청이 들어오면 쿼리스트링을 통해 받은 값들이 기본적으로 String형이므로 객체에 저장할 때에 값을 변환해주는 역할을 한다. 이에 대한 과정을 다음과 같다.
1. 타입 변환 => 변환된 결과 혹은 에러를 BindingResult에 저장
2. 데이터의 범위가 넘어가는 경우 등에 대한 데이터 검증 => BindingResult에 결과 저장
ex) day라는 값이 있다고 가정했을 때, 31이라는 값을 넘으면 안되므로 이러한 상황에 데이터 검증3. 최종적으로 바인딩 한 결과를 컨트롤러에 넘겨줌.
※ BindingResult는 매개변수에서 바인딩 할 객체의 바로 뒤에 위치
'[패스트캠퍼스] 스프링의정석 정리 > Spring' 카테고리의 다른 글
스프링 DI 이론 - IoC와 DI (0) | 2023.05.18 |
---|---|
스프링 DI 흉내내기 (0) | 2023.05.17 |
데이터의 변환과 검증 핵심 인터페이스 정리 (1) | 2023.05.17 |
DispatcherServlet 정리 (1) | 2023.05.17 |
스프링에서의 예외 처리 핵심 정리 (0) | 2023.05.17 |