java.validation의 @Valid 어노테이션 사용법 정리 글입니다.
Spring Boot 라이브러리에서 기본적으로 탑재된 기능이며 따로 dependency해 줄 필요가 없습니다.
Spring Boot Version은 2.2.2.RELEASE 입니다.
1. java.validation 어노테이션 설명
Anotation | 제약조건 |
@NotNull | Null 불가 |
@Null | Null만 입력 가능 |
@NotEmpty | Null, 빈 문자열 불가 |
@NotBlank | Null, 빈 문자열, 스페이스만 있는 문자열 불가 |
@Size(min=,max=) | 문자열, 배열등의 크기가 만족하는가? |
@Pattern(regex=) | 정규식을 만족하는가? |
@Max(숫자) | 지정 값 이하인가? |
@Min(숫자) | 지정 값 이상인가 |
@Future | 현재 보다 미래인가? |
@Past | 현재 보다 과거인가? |
@Positive | 양수만 가능 |
@PositiveOrZero | 양수와 0만 가능 |
@Negative | 음수만 가능 |
@NegativeOrZero | 음수와 0만 가능 |
이메일 형식만 가능 | |
@Digits(integer=, fraction = ) | 대상 수가 지정된 정수와 소수 자리 수 보다 작은가? |
@DecimalMax(value=) | 지정된 값(실수) 이하인가? |
@DecimalMin(value=) | 지정된 값(실수) 이상인가? |
@AssertFalse | false 인가? |
@AssertTrue | true 인가? |
2. Member.java
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
public class Member {
@NotNull(message = "id는 필수 값입니다.")
@Size(min = 5, max = 10)
private String id;
@Max(value = 25, message = "25세 이하만 가능합니다.")
@Min(value = 18, message = "18살 이상만 가능합니다.")
private int age;
@Pattern(regexp = "[a-zA-z0-9]+@[a-zA-z]+[.]+[a-zA-z.]+")
private String email;
..setter/getter 생략..
}
3. TestController.java
import javax.validation.Valid;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping(value = "/member")
public class TestController {
@PostMapping
@ResponseBody
public ResponseEntity saveMember(@Valid Member member, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(bindingResult.getAllErrors());
}
/*
save Memeber
*/
return ResponseEntity.ok(member);
}
}
- [post] /member요청 시, member를 저장하는 코드입니다.
- @Valid 어노테이션을 통해 Member가 유효한 객체인지 검사합니다.
- Member 객체가 유효하지 않으면 bindingResult.hasErrors() 메소드에서 true 값이 반환됩니다.
- Member가 유효하지 않다면, ResponseEntity에 BAD_REQUEST와 bindingResult.getAllErrors() 값을 넣고 생성하여 반환합니다.
4. 테스트
POST http://localhost:8080/{contextPath}/member?id=ki&age=17&email=bamdule@navercom
Reponse 400 Bad Request
'IT > Spring' 카테고리의 다른 글
[Spring Boot] Hibernate 연동 방법 (0) | 2020.01.23 |
---|---|
[Spring Boot] Swagger 연동 및 설정 방법 (4) | 2020.01.13 |
[Spring Boot] thymeleaf template layout 사용하기 (5) | 2020.01.08 |
[Spring Boot] SpringBootServletInitalizer를 상속하는 이유 (0) | 2020.01.07 |
[Spring Boot] @SpringBootApplication 이란? (0) | 2020.01.07 |