public CustomApiResponse save(@RequestBody @Valid CardRequest cardRequest) {
어노테이션 Valid 를 활용하면 파라미터 매핑 단계에서 검증을 할 수 있다
스프링부트 2버전에서는 적용하면 알아서 된다고 하는 것 같은데,
3버전부터는 추가로 등록해주지 않으면 적용이 안되는 것을 확인했다(추측...)
implementation 'org.springframework.boot:spring-boot-starter-validation'
@JsonProperty("card_number")
@Schema(name = "card_number", description = "카드번호", example = "1125890588247725")
@Pattern(regexp = "[0-9]{16}")
private String cardNumber;
@JsonProperty("cvc")
@Schema(name = "cvc", description = "CVC", example = "445")
@Pattern(regexp = "[0-9]{3}")
private String cvc;
다음과 같이 정규식을 활용해서 제한할 수도 있다
| 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 인가? |
'Dev Back > JAVA' 카테고리의 다른 글
| [adoc] 한글이 깨지는 이슈 (1) | 2024.07.03 |
|---|---|
| [JAVA] 접근 제어자의 종류와 사용법 (0) | 2024.06.26 |
| [JAVA] AES256 암/복호화 (0) | 2024.06.14 |
| [JAVA] 인텔리제이 자바 빌드 버전 바꾸기 (0) | 2024.05.28 |
| [JAVA] @JsonProperty (0) | 2024.05.27 |