javax.validation 패키지 (spring-boot-starter-validation)
- 스프링부트 버전 2.3.0부터는 starter web에 디펜던시로 spring-boot-starter-validation 제외되서, 별도로 추가
@Valid 사용법
1)유효성 검사를 할 Entity 클래스의 속성에 @Valid의 제약조건 적용
2)데이터가 유효하다면 아무일도 일어나지 않음.
3)데이터가 유효하지 않을 시, 그에 대한 에러 정보를 BindingResult 변수에 직접 담아줌.
1. 디펜던시(dependency) 추가
1) Maven
Pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<version>2.4.2</version>
</dependency>
2) gradle
build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
}
2. @Valid 사용
2-1) Controller
- 컨트롤러에서는 매개변수에 @Valid 어노테이션을 추가하면 된다.
@PostMapping(value = "/validCheck")
public String validCheck(@ModelAttribute @Valid MemberDto memberDto, BindingResult result){
System.out.println("== valid Check ==");
}
2-2) Service
- Service나 Bean에서는 Class 위에 @Validated도 추가해줘야 한다.
@Validated
@Service
public class MemberService {
@PostMapping("/validCheck")
public void MemberValidCheck(@Valid MemberDto memberDto) {
}
}
3. 주요 어노테이션
- @NotNull
- @NotBlank : NotNull + 문자 한 개 이상 포함 (공백 제외)
- @NotEmpty : NotNull + 공백 문자열 허용하지 않음
- @AssertTrue : true인지 확인
- @Min : 값이 Min보다 작은지 확인
- @Max : 값이 Max보다 큰지 확인
- @Size : 값이 min과 max사이에 해당하는지 확인 (CharSequence, Collection, Map, Array에 해당)
4. 예외 처리
4-1) ConstraintViolationException 에러
- 유효성 검사 실패 시, ConstraintViolationException (500) 예외 발생
- ConstraintViolationException은 실패 정보를 담고 있는 ConstraintViolation 객체로, 적절한 오류 응답 ExceptionHandler를 생성해야된다.
4-2) BindingResult
- 검증 오류 발생 시, 스프링 프레임워크에서 제공하는, 오류 내용을 보관하는 객체
- BindingResult 객체의 파라미터 위치는 반드시 @ModelAttribute 어노테이션이 붙은 객체 다음에 위치해야 한다
'JAVA > spring' 카테고리의 다른 글
@Valid 비밀번호 유효성 검사 (0) | 2022.06.03 |
---|---|
lombok(롬복) 설치 및 적용 (0) | 2022.03.24 |
타임리프(Thymeleaf) (0) | 2022.03.23 |
Spring directory 구조 (0) | 2022.03.12 |
스프링 프로젝트 생성 (이클립스) (0) | 2021.12.24 |