POST 요청시 메서드로 들어오는 BookForm 객체의 생성 주체가 누구인가요?
안녕하세요.
코드를 읽어보며 흐름을 파악하다가 궁금증이 생겨 질문 드립니다.
public class ItemController {
@GetMapping("/items/new")
public String createForm(Model model) {
model.addAttribute("form", new BookForm());
return "items/createItemForm";
}
@PostMapping("/items/new")
public String create(BookForm form) {
... 생략
}
/items/new에 GET으로 접근하면, createForm()이 호출되어 BookForm 객체가 생성되고, Model 객체를 통해 viewResolver로 넘어가는 로직은 이해가 됩니다.

그러나 POST 요청을 보내면, create()가 호출되어 BookForm 객체를 인자로 받는데요.
이때, 인자로 들어온 BookForm 객체는 GET 요청시 보내준 BookForm 객체와 다른 객체더라구요.
아마 누군가가 HTML input 태그에 입력된 값을 BookForm 객체로 변환시켜 넣어주는 것 같은데요.
누가 이 책임을 갖고, 어떻게 데이터를 객체로 변환시키는지 그 흐름이 궁금합니다.
마치 @ResponseBody에서 HttpMessageConverter가 객체를 JSON으로 변환시켜준 것처럼
이번에도 스프링이 HttpMessageConverter를 통해 HTML input 데이터를 객체로 변환시켜 Controller에게 반환시켜 주는 걸까요?
감사합니다.
답변 1
2
안녕하세요. anthologia님, 공식 서포터즈 y2gcoder입니다.
해당 부분은 HandlerMethodArgumentResolver(줄여서 보통 ArgumentResolver)의 구현체에서 담당합니다. 말씀하신 HttpMessageConverter는 요청시에 @RequestBody나 HttpEntity를 담당하는 ArgumentResolver 구현체에서 사용하고 있습니다.
자세한 것은 영한님의 MVC 1편 강의나 HandlerMethodArgumentResolver 를 구글링해주십시오!
감사합니다.
OrderServiceTest 상문주문 테스트 시 update 쿼리 문의
0
30
1
sdk 설정 오류
0
71
2
오탈자 - @Transactional
0
68
1
src/test/resources 테스트 경로 문제
0
68
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
71
1
MemberRepositoryTest 실행오류
0
91
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
198
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
154
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
58
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
82
1
기본 생성자
0
67
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
107
1
멤버서비스테스트 부분에서 막힙니다.
0
176
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
125
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
129
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
122
1
24분 27초 연관관계 편의 메서드 위치
0
118
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
115
2
빌드 툴, Gradle
0
65
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
82
2
Repository에서 EntityManager 주입 방식 차이
0
98
1
롬복과 사용자 정의 setter 메서드
0
78
1
주문 목록 조회 fetch join 질문드립니다
0
91
1
dirty checking 질문드립니다.
0
88
1





