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만 가능
@Email 이메일 형식만 가능
@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

+ Recent posts