728x90
반응형
source 는 Github 에 있습니다.
목차는 spring series 목차 에 있습니다.
[spring 18편] spring validation (유효성 검사)
spring validation
- spring 에서 입력 값에 대해 validation 하는 것에 대해 정리했습니다.
- 아래 예제는 controller 입력 값에 대해 Validation 하는 로직입니다.
- Controller 의 경우 '@Valid' 옵션을 붙여주면 동작합니다.
- Service 의 경우 '@Validated' 옵션을 붙여주면 됩니다.
@Valid
@Valid
는 자바 표준 스펙에 위해 구현된 객체의 제약 조건을 검증하는 어노테이션 입니다.- Controller method argument 를 만들어주는 ArgumentResolver 에서
@Valid
선언된 것을 validation 합니다. - 참고로 Service layer 에서도 Validated 가 선언돼있으면 Valid (Jarkara validation) 사용 가능합니다.
- 아래 예시와 같이 MemberCommand.Create 값이 없으면 registerMember 호출 시, validation 에러가 발생합니다.
@Service
@Validated
@RequiredArgsConstructor
public class MemberServiceImpl implements MemberService{
@Override
public String registerMember(@Valid MemberCommand.Create memberCommandCreate) {
return memberCommandCreate.getId();
}
}
public class MemberCommand {
@Data
@Builder
@AllArgsConstructor
public static class Create {
@NotBlank
private String id;
@NotBlank
private String name;
}
}
@Validated
@Valid
와는 다르게 Spring 프레임워크에서 제공하는 validation 기능입니다.- AOP 기반으로 동작하며, 아래와 같이 사용 가능합니다.
@Service
@Validated
public MemberServiceImpl implements MemberService {
public void addMember(@Valid AddMemberRequest request) {
// do something
}
}
- AOP 기반으로 동작하기에 controller, service 등 어떤 계층에 상관없습니다.
Controller Example
Reference
'Spring > series' 카테고리의 다른 글
[spring 20편] spring validate custom (spel 이용해서 validate 수행할지 결정) (0) | 2023.01.13 |
---|---|
[spring 19편] spring validate custom (유효성 검사) (0) | 2023.01.01 |
[spring 17편] spring-boot, docker, flyway 활용해서 로컬 mysql 테스트 환경 구축 (0) | 2022.12.19 |
[spring 16편] Rest Template, WebClient 정리 (0) | 2022.12.15 |
[spring 15편] spring inject bean into enum 정리 (0) | 2022.12.10 |
댓글