@Getter
@Setter // @Setter가 빠진다면?
public class FileUploadDto {
private String description;
private MultipartFile file;
}
@Controller
public class FileUploadController {
@PostMapping
public void uploadFile(@ModelAttribute FileUploadDto fileUploadDto) {
MultipartFile file = fileUploadDto.getFile();
String description = fileUploadDto.getDescription();
}
}
위의 @ModelAttribute를 사용했을 때 정상적으로 동작하지만, 만약 @Setter가 빠진다면 FileUploadDto 클래스의 file 필드에 null이 들어가게 되어 에러가 나게 된다.
그러나 @RequestDto를 사용할 경우
@Getter
public class UserDataDto {
private String name;
}
@RestController
public class UserController {
@PostMapping("/users")
public String registerUser(@RequestBody UserDataDto userDataDto) {
return "User " + userDataDto.getUsername() + " registered successfully!";
}
}
@Setter가 없다고 하더라도 정상적으로 username과 email 필드에 정상적으로 데이터가 매핑되어 제대로 "User~"이 리턴될 것이다.
그 이유는
@ModelAttribute는 내부적으로 Setter를 통해 데이터를 바인딩하고,
@RequestBody는 ObjectMapper를 통해 데이터를 바인딩하기 때문이다.
'Spring' 카테고리의 다른 글
[Spring] Gradle 경로 에러 (1) | 2024.09.11 |
---|---|
[Spring] 스프링 3.3에서 추가된 `pageSerializationMode = VIA_DTO` (0) | 2024.08.26 |
[Spring] 코틀린 쓸 때 @Valid 동작이 안된다면 (0) | 2024.01.18 |
[Spring] 스웨거 안되는 버전이 너무 많아요! (0) | 2023.12.31 |
[Kotlin] 정적 팩토리 메소드 (0) | 2023.12.26 |
댓글