1. Validation이란?
Java에서 Bean Validation이라는 데이터 유효성 검사 프레임워크를 제공하여 필드에 annotation을 적용하여 제약 조건을 정의하기 위해 사용한다. Validation은 객체에 직접 정의하여 유효성 검사 로직의 문제를 해결할 수 있다.
2. Dependency 추가
implementation 'org.springframework.boot:spring-boot-starter-validation'
3. Parameter 검증하기
@Valid 애노테이션을 객체에 적용하면 유효한 객체인지 검사한다.
BindingResult 객체를 통해 유효하지 않을 경우 Error를 확인할 수 있다.
@Controller
public class TestController {
private static final Logger logger = LoggerFactory.getLogger(AuthController.class);
@GetMapping(value = "/test")
public ResponseEntity test(@Valid Member member, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
Map<String, String> errorMap = new HashMap<>();
for (FieldError error : bindingResult.getFieldErrors()) {
errorMap.put(error.getField(), error.getDefaultMessage());
logger.info(error.getDefaultMessage());
}
return "ERROR!";
}
return ResponseEntity.ok(member);
}
}
해당 객체 내부에서 필드에 제약조건 어노테이션을 붙일 수 있다.
public class Member {
@Size(20)
@NotBlank
private String username;
@NotBlank
private String password;
...
}
4. @Max와 @Size의 차이
username의 최대 길이를 제한하기 위해 @Max를 사용하니 20자 이하임에도 불구하고 '20 이하여야 합니다' 라는 Error가 발생하였다.
@Max, @Min의 경우 숫자를 사용하는 필드를 검증하는데 사용된다고 한다.
String(숫자 표시), int, byte 등의 최대 길이를 제한하는 것이다.
@Size는 문자열, 배열 등의 크기를 검증하는데 사용된다.
username에 영어가 포함되면 String 문자열을 받기 때문에 @Size를 사용하여 제한하였다.
참고
https://bamdule.tistory.com/35
'Spring boot' 카테고리의 다른 글
[Spring Boot] @RequestHeader, Header의 데이터 (0) | 2022.05.05 |
---|---|
[Spring boot] 배포 패키징 jar 에서 war로 변경 (1) | 2022.04.10 |
[Spring Boot] JPA 조회 작업 findById(), getOne()의 차이 (0) | 2022.03.29 |
[Spring Boot] JPA Caching 적용하기 (0) | 2022.03.21 |
[Spring Boot] PasswordEncoder.mathes() 암호화된 패스워드 비교 (0) | 2022.03.21 |