스프링) Spring boot dto/lombok/validation
스프링) Spring boot dto/lombok/validation
이 글은 Tistory에서 이전된 포스팅입니다. 원본은 여기에서 확인할 수 있습니다.
DTO/LomBoK
1
2
3
4
5
6
@Getter
public class UserSignUpDto {
...
private boolean admin = false;
...
}
boolean @getter 는 isAdmin() 으로 작성된다.
boolean값은 is로 시작하는게 보통이다. ex) OptionalType.isEmpty()/isPresent()
1
2
3
4
5
6
7
8
9
10
11
@Getter
@Setter
@ToString(callSuper = true)
public class PostUpdateDto extends PostUserDto {
private Optional<String> title;
private Optional<String> contents;
public PostUpdateDto(String username, String password) {
super(username, password);
}
}
1
2
3
4
5
6
7
8
9
10
@AllArgsConstructor
@Getter
@Setter
@ToString
public class PostUserDto {
@NotBlank
private String username;
@NotBlank
private String password;
}
상속받았을 때 @ToString(callSuper = true)을 적용하면 부모까지 출력된다.
ex) PostUpdateDto(super=PostUserDto(username=choi0, password=abcd), title=Optional[hi2], contents=null)
@Getter/Setter는 부모 class와 무관하다. 생성자를 따로 작성해줘야 한다.
위와 같이 부모에 validate가 있어도 validate 잘 동작한다.
validation
implementation 'org.springframework.boot:spring-boot-starter-validation' 을 gradle에 추가한다.
1
2
3
4
5
6
7
(controller)
@PatchMapping("/{postId}")
public PostResponseDto patchPost(@PathVariable Long postId, @Valid PostUpdateDto requestDto, BindingResult bindResult) {
List<FieldError> fieldErrors = bindResult.getFieldErrors();
if(fieldErrors.size() > 0) throw new IllegalArgumentException("Dto fail");
...
}
기본 DTO는 null값이 할당될 수 있었다. validate를 DTO에 적용하고 Controller에 명시하면 검증을 거치고 BindingResult를 통해 결과를 반환한다.
결과에서 Error가 있다면 던지고 @ExceptionHandler(Error.class) 에서 처리하는 등의 방법이 있다.
이 기사는 저작권자의 CC BY-NC 4.0 라이센스를 따릅니다.