API를 개발하다보면 데이터의 필수값 등을 검증해야할 경우가 있다.
이 글에서는 객체의 검증을 쉽게 하는 법을 공부해보고자한다.
implementation 'org.springframework.boot:spring-boot-starter-validation:2.3.0.RELEASE'
[제약조건 어노테이션 종류]
@Valid를 이용한 검증해보기
@Valid는 빈 검증기를 이용해 객체의 제약 조건을 검증하는 어노테이션이다.
객체의 필드에 달린 어노테이션으로 검증한다.
@Setter
@Getter
@AllArgsConstructor
@RequiredArgsConstructor
public class UserAuthReq {
@NonNull
private String userName;
@NotNull
private String password;
@Valid
private Token token;
}
@NotNull은 필드의 값이 null이 아님을 확인한다.
@ApiOperation(value = "로그인")
@PostMapping(value = "/login")
public ResponseEntity<CommonResponse<Object>> login(@RequestBody @Valid UserAuthReq userAuthReq) {
return ResponseEntity.ok().body(new CommonResponse<>(securityService.login(userAuthReq),StatusCode.SUCCESS_SELECT));
}
위와 같이 메소드에 @Valid를 붙이면 유효성 검증이된다.
동작원리
@Valid 특징
@Validated를 이용한 검증해보기
@Validated는 AOP 기반으로 메소드의 요청을 가로채서 유효성을 검증한다.
JSR 표준기술이아니며 spring프레임워크에서 제공하는 어노테이션이다.
@Service
@Slf4j
@RequiredArgsConstructor
@Validated
public class SecurityService {
public AuthTokenVO login(@Vadid UserAuthReq userAuthReq) {
...
}
}
위와 같이 클래스에 @Validated를 붙이고, 검증할 메소드에 @Valid를 붙이면 유효성 검증이 진행된다.
동작원리
@Validated 특징