작성
·
822
·
수정됨
0
안녕하세요.
@ModelAttribute 바인딩에 대한 질문 드립니다.
바인딩 방식으로 제가 생각한 것은
필드를 인자로 받는 생성자가 있다면 해당 생성자로 값을 주입한다.
없다면 기본 생성자와 Setter를 이용해 값을 할당한다.
이렇게 생각했습니다.
@Getter @Setter
public class Item {
private Long id;
private String itemName;
private Integer price;
private Integer quantity;
public Item(String itemName, Integer price, Integer quantity) {
this.itemName = itemName;
this.price = price;
this.quantity = quantity;
}
}
이렇게 해놓은 상태에서 Controller addItemV2 메소드를 실행할 경우,
Cannot resolve parameter names for constructor public hello.itemservice.domain.item.Item(java.lang.String,java.lang.Integer,java.lang.Integer)
위와 같은 오류가 발생합니다.
기본 생성자를 추가했을 경우에는 정상 작동하구요.
1번의 방식으로 실행된다면 오류없이 실행되어야 한다고 생각했는데
바인딩 방식을 잘 못 이해하고 있는 것인지 궁금합니다.
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
김혜원님께서 @ModelAttribute와 생성자의 바인딩 방식에 대해 질문해주셨군요. 스프링 MVC에서의 바인딩 방식에 대한 이해를 돕기 위해 관련 질문과 그에 대한 답변 링크를 안내해 드리겠습니다.
강의 ‘스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술’ 중 ‘@ModelAttribute 생성자’라는 제목으로 비슷한 주제에 대해 다룬 질문이 이미 있습니다. 해당 질문에서는 @ModelAttribute 사용 시 객체 생성과 관련하여 어떤 생성자가 호출되는지에 대한 메커니즘을 설명하고 있습니다.
질문 내용을 바탕으로 하신다면 다음 링크가 도움이 될 것입니다.
해당 링크를 참조하시면 @ModelAttribute와 관련된 객체 생성 방식에 대한 답변을 확인하실 수 있습니다.
더 궁금한 사항이 있으시다면 해당 링크를 통해 추가 질문을 남겨 주세요.