반응형
Controller에서 값을 받아 일일이 값을 검증해주다보니 소스가 길어지고 가독성이 안좋아지는 것 방지하고자 @valid를 사용하게 되었다.
1. build.gradle 에 validation 의존성 추가
dependencies {
implementation('org.springframework.boot:spring-boot-starter-validation')
}
2. Request Class 에 검증할 어노테이션 추가
@Getter
@FieldDefaults(level = AccessLevel.PRIVATE)
public class CreateUserRequest {
@NotBlank(message = "아이디를 입력해주세요.")
String id;
@Min(value = 8, message = "비밀번호는 8자리 이상 입력해주세요.")
String password;
@Email(message = "이메일 형식을 확인해주세요.")
String email;
@Pattern(regexp = "^[0-9]+$", message = "휴대폰번호는 숫자만 입력해주세요.")
String mobileNumber;
}
>> 어노테이션 종류
@NotNull : 해당 값이 null이 아닌지 검증
@NotEmpty : 해당 값이 null이 아니고 빈 스트링("")이 아닌지 검증, 공백(" ")은 허용
@NotBlank : 해당 값이 null이 아니고, 빈 스트링("")과 공백(" ")이 아닌지 검증
@AssertTrue : 해당 값이 True인지 검증
@Size : 해당 값이 주어진 값 사이에 해당하는지 검증
@Min : @Min(value = 8) 해당 값이 8자리보다 작지 않은지 검증
@Max : @Max(value = 10) 해당 값이 10자리를 넘는지 검증
@Pattern : regexp를 이용해 정규표현식으로 값을 검증
@Email : 이메일 형식이 맞는지 검증
그 외 문서 참고 > https://javaee.github.io/javaee-spec/javadocs/javax/validation/constraints/package-summary.html
3. Controller에서 @Valid로 받기
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public String signUp(@RequestBody @Valid CreateUserRequest request) {
return "사용자 생성 완료";
}
* @Valid를 사용하여 Controller에 값을 가져올 때 유효성 체크를 했는데 DDD를 공부하면서 도메인 쪽에서 검증하는 방식으로 바꿔보려한다.. 뭐가 정답인지는 모르겠어요..
반응형
'Java' 카테고리의 다른 글
@Transactional 란? (0) | 2023.05.01 |
---|---|
[Spring] DAO, DTO, VO, Record 개념 및 차이점 (0) | 2023.04.17 |
CI/CD란? 지속적 통합, 지속적 제공(배포) (0) | 2021.09.01 |
[Spring Boot] /index.html 파일 static 폴더가 아닌 templates 폴더에서 호출되게 하는 방법 (0) | 2021.06.24 |
[Spring Boot] SpringBootServletInitializer 상속하는 이유 (0) | 2021.06.24 |