-
Spring MVC - @ModelAttribute : 객체로 쿼리 파라미터 바인딩Spring/Spring MVC 2021. 12. 26. 14:49728x90반응형
@ModelAttribute : 객체로 쿼리 파라미터 바인딩
쿼리 파라미터로 넘어오는 변수들은 객체로 주입받을 수 있다.
@ModelAttribute로 쿼리 파라미터 데이터들을 객체로 주입받기
- @ModelAttribute을 이용하면 쿼리 파라미터의 데이터들은 객체의 프로퍼티로 바인딩이 된다.
- 즉, 전달되는 쿼리 파라미터의 이름과 동일한 프로퍼티에 자동으로 바인딩이 된다.
- 프로퍼티에 해당하는 쿼리 파라미터가 없을 경우 기본값이 들어간다.
- @ModelAttribute는 생략이 가능하다.
- 이러한 객체를 커맨드 객체(Command Object)라 부른다.
- request영역에 자동으로 저장이 된다.
먼저 쿼리 파라미터의 데이터들을 주입받을 수 있는 객체를 생성하기 위해 클래스를 생성한다.
@Data public class UserData { private String username; private int age; }
@Data는 lombok의 애노테이션이며
@Getter, @Setter, @ToString,
@EqualsAndHashCode, @RequiredArgsConstructor
들을 만들어 준다.요청 URL /model-attribute-v1
요청 URL /model-attribute-v1?username=userA&age=20@Slf4j @RestController public class RequestParamController { @GetMapping("/model-attribute-v1") public String modelAttributeV1(@ModelAttribute UserData userData) { log.info("username={}, age={}", userData.getUsername(), userData.getAge()); return "ok"; } }
넘어오는 데이터명과 객체에 바인딩 프로퍼티의 이름이 같아야 주입이 되며, 해당 값이 안 넘어오면 객체 멤버 변수는 각 자료형에 맞게 자동으로 기본값이 대입된다. ( ex- int = 0, String = null, boolean = false....)
참고
프로퍼티(Property란?)
자바 빈즈 규약을 보면 재사용이 가능한 객체를 빈(Bean)으로 명명한다. 이 Bean을 클래스 외부에서 필드에
접근할 경우에는 반드시 메서드를 통해 접근해야 하는데 property는 객체와 관련하여 이름 붙여진 속성을
말하며 빈이 관리하는 데이터를 의미한다.
- 프로퍼티 값을 구하는 메서드와 프로퍼티 값을 변경하는 메서드 - getter, setter
- 인스턴스 변수, getter, setter를 묶어서 property라 한다.
728x90반응형'Spring > Spring MVC' 카테고리의 다른 글
Spring MVC - 폼 커스텀 태그(Form Custom Tag) (0) 2021.12.26 Spring MVC - 커맨드 객체(Command Object) (0) 2021.12.26 Spring MVC - JSP에 데이터 전달 (0) 2021.12.26 Spring MVC - 쿼리 파라미터(Parameter) 전달(요청 파라미터 주입받기) (0) 2021.12.25 Spring MVC - URL Mapping(요청 매핑) - @RequestMapping @GetMapping @PostMapping (0) 2021.12.25