// 이러한 DTO가 있을 때
@Getter @Setter
class CreateBoardDto {
private String title;
private String content
}
// 기존 방식
@PostMapping("/board")
public String getBoardList(@RequestParam String title, @RequestParam String content) {
CreateBoardDto createBoardDto = new CreateBoardDto();
createBoardDto.setTitle(title);
createBoardDto.setContent(content);
}
// ModelAttribute를 사용한 방식
public String getBoardList(@ModelAttribute CreateBoardDto createBoardDto)
CreateBoardDto 클래스에 Lombok 라이브러리인 @Getter, @Setter 를 달아주었더니 그 클래스의 객체에 set + {실제필드값} 형태의 메서드를 통해 받은 파라미터와 실제 필드값을 매핑시켜주는 구조의 코드입니다.
Lombok의 @Setter 애너테이션은 일반적으로, 스펠링 그대로인 필드 이름 앞에 'set' 을 접두어로 붙여서 메서드를 생성 가능합니다.
// 인자로 이름 명시
@ModelAttribute("name")
// 인자로 이름 명시 X
// 애너테이션에 이름 명시하지 않으면, 기본적으로 해당 클래스명의 첫 글자를 소문자로 변환하여 모델의 키로 사용합니다.
// 여기서는, 모델의 키: createBoardDto
@ModerlAttribute 클래스명 객체명
이렇게 @ModerAttribute 애너테이션을 사용하면 클라이언트에서 넘어온 요청데이터를 자동으로 모델에 바인딩하여 컨트롤러에서 사용할 수 있습니다.