DTO 사용에대해 궁금합니다.
늦었지만 혹시 구글 검색을 통해 들어오신 분들을 위해 추가적으로 답변드립니다.DTO와 같은 모델에 setter가 없는 경우 다음과 같이 데이터 바인딩을 합니다. 결론부터 말씀드리면, 기본 생성자를 제거해야 합니다.아래 글은 제가 작성한 블로그의 내용을 좀 발췌했습니다.... 다음과 같은 방법 중 하나로 인스턴스화됩니다.- @ModelAttribute 메소드에 의해 추가되었을 수 있는 모델을 탐색한다.- 만약 model attribute가 클레스 레벨에 @SessionAttribute 어노테이션이 붙었는지 Http Session을 통해 탐색한다- model의 속성 이름과 path variable, request parameter와 같은 request 값이 매치되는 경우 컨버터를 얻는다.- 기본 생성자를 통해 인스턴스화한다.- 서블릿 request 파라미터들의 이름과 가장 일치하는 인자가 있는, 적절한 생성자를 통해(primary constructor) 인스턴스화된다. 인자의 이름은 JavaBeans의 @ConstructorProperties 또는 바이트코드의 런타임 시 존재하는(runtime-retained) 파라미터의 이름을 통해 결정된다.만약 컨트롤러에서 DTO가 데이터바인딩이 되지 않을 경우, DTO에 기본 생성자 및 관련 어노테이션이 있는지 확인하셔야 합니다. 만약 있다면 제거해주세요.