[Spring] validation 어노테이션으로 간단한 유효성 검사
by 코박7Spring 프레임워크에서 제공하는 유효성 검사 기능에 대해 알아보고자 합니다.
유효성 검사는 사용자로부터 입력받은 데이터를 검증하여 올바른 형식인지 확인하는 중요한 작업입니다.
Spring은 다양한 방법을 통해 간편하게 유효성 검사를 수행할 수 있도록 지원하고 있습니다.
1. Dependency 추가
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-validation'
}
@Valid 어노테이션을 사용하기 위해 의존성을 추가해줍니다.
2. Validation 어노테이션 종류
- @AssertFalse : false 값만 통과 가능
- @AssertTrue : true 값만 통과 가능
- @DecimalMax(value=) : 지정된 값 이하의 실수만 통과 가능
- @DecimalMin(value=) : 지정된 값 이상의 실수만 통과 가능
- @Digits(integer=,fraction=) : 대상 수가 지정된 정수와 소수 자리수보다 적을 경우 통과 가능
- @Future : 대상 날짜가 현재보다 미래일 경우만 통과 가능
- @Past : 대상 날짜가 현재보다 과거일 경우만 통과 가능
- @Max(value) : 지정된 값보다 아래일 경우만 통과 가능
- @Min(value) : 지정된 값보다 이상일 경우만 통과 가능
- @NotNull : null 값이 아닐 경우만 통과 가능
- @NotEmpty : null, "" 이 아닌 경우
- @NotBlank : null, "", " " 이 아닌 경우
- @Null : null일 겨우만 통과 가능
- @Pattern(regex=, flag=, message=) : 해당 정규식을 만족할 경우만 통과 가능
- @Size(min=, max=) : 문자열 또는 배열이 지정된 값 사이일 경우 통과 가능
- @Valid : 대상 객체의 확인 조건을 만족할 경우 통과 가능
- @Positive : 양수인지 확인.
3. DTO 에 유효성 검증
/**
* {@code POST } : Create a new User.
* @param request the request to create.
* @return the {@link ResponseEntity} with status {@code 201 (Created)} and with the UserId in the body.
*/
@PostMapping
public ResponseEntity<Long> create(@Valid @RequestBody UserDTO request) {
UserDTO response = userMapper.toDto(userService.create(userMapper.toEntity(request)));
return ResponseEntity.created(new URI("/api/user/" + response.getUserId()))
.headers(HeaderUtil.createEntityCreationAlert(applicationName, true, ENTITY_NAME,
response.getUserId().toString()))
.body(response.getUserId());
}
Controller 에서 @Valid 어노테이션을 추가해줌으로써 내가 설정한 유효성 검증이 동작합니다.
// 이런식으로 사용한다.
@Getter
@NoArgsConstructor
public class UserDTO {
@NotNull(message = "Id는 필수 값 입니다.")
private Long id;
private String name;
@Email
private String email;
}
이렇게 Spring에서 제공하는 유효성 검사 기능을 활용하면 간편하게 데이터의 유효성을 검증할 수 있습니다. 유효성 검사를 통해 안정성을 높이고, 잘못된 데이터로 인한 문제를 방지할 수 있습니다.
이상으로 Spring에서 제공하는 유효성 검사 기능에 대한 포스팅을 마치겠습니다. 추가 질문이 있으시면 언제든지 물어보세요. 감사합니다!
'spring' 카테고리의 다른 글
[Spring] 간단하게 POST 요청 보내기 (2) | 2023.07.25 |
---|---|
[Spring] CORS 란? CORS 해결 (0) | 2023.07.13 |
[Spring] Embedded kafka 테스트 진행 (0) | 2023.07.07 |
[Spring] File 을 MultipartFile 로 변경 (1) | 2023.07.07 |
[Spring] @Vaild 어노테이션을 리스트에 적용시켜보자 (0) | 2023.06.25 |
블로그의 정보
코딩박스
코박7