반응형
실제 개발을 할 떄 요청 파라미터를 받아 객체를 만들고 값을 넣어줘야 하는데 이 과정에서 스프링이 자동화로 지원해주는 기능이 있다. 이 기능에 대해서 알아본다.
import lombok.Data;
@Data
public class HelloData {
private String username;
private int age;
}
먼저 요청 파라미터를 바인딩 받을 객체를 만들었다.
lombok 라이브러리를 통해 @Data 어노테이션을 사용했다.
@ResponseBody
@RequestMapping("/model-attribute-v1")
public String modelAttributeV1(@ModelAttribute HelloData helloData) {
log.info("username={}, age={}", helloData.getUsername(),
helloData.getAge());
return "ok";
}
이렇게 @ModelAttribute를 통해 사용하면 위에서 만든 HelloData 객체가 생성이 되고 요청 파라미터의 이름으로 HelloData 객체의 프로퍼티를 찾는다 그리고 그 프로퍼티의 setter를 호출해 파라미터의 값을 입력(바인딩)한다.
강의 자료에 따르면 예시로 파라미터 이름이 username이면 setUsername() 메서드를 찾아서 호출하면서 값을 입력한다고 한다.
객체에 getUsername(), setUsername() 메서드가 있다면 이 객체는 username라는 프로퍼티를 가지고 있는데 username의 프로퍼티의 값을 변경하면 setUsername(), 조회하면 getUsername()이 호출되는 것이다.
@ResponseBody
@RequestMapping("/model-attribute-v2")
public String modelAttributeV2(HelloData helloData) {
log.info("username={}, age={}", helloData.getUsername(),
helloData.getAge());
return "ok";
}
위 코드를 조금 더 간단하게 다듬으면 이렇게 된다. String, int, Integer 같은 단순 타입은 @RequestParam을 생략할 수 있고 나머지는 @ModelAttribute를 생략할 수 있다. 그 외에 argument resolver에 관련되어서도 있다고 하는데 아직 안 배웠다.
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술을 참고하여 공부하였습니다.
반응형
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : HTTP 요청 메시지 JSON (0) | 2022.01.26 |
---|---|
[Spring Boot] : HTTP 요청 메시지 - 단순 텍스트 관련 알아보기 (0) | 2022.01.26 |
[Spring Boot] : HTTP 요청 파라미터 - @RequestParam (0) | 2022.01.25 |
[Spring Boot] : HTTP 요청 파라미터 , 쿼리 파리미터, HTML Form (0) | 2022.01.25 |
[Spring Boot] : HTTP 요청 기본, 헤더 조회 (0) | 2022.01.25 |
댓글