Spring Boot Validation 검사

devyunie·2024년 8월 22일

SpringBoot

목록 보기
6/13
post-thumbnail

Validation 검사

  • client request body 데이터의 유효성 검사
  • spring-boot-start-Validation 라이브러리 사용
  • 스프링 프레임워크에서 제공하는 유효성 검사 인터페이스 라이브러리
  • 클라이언트가 서버측에 데이터를 전송할 때 유효성을 검사하고 정확한 데이터만 받을수 있도록 검사

build.gradle 파일에 dependencies 추가
implementation 'org.springframework.boot:spring-boot-starter-validation'


공통적인Controller 부분 생성

@PostMapping("/validation")
public String validation(
	@RequestBody @Valid Validation requestBody
){
	return "정상";
}
  • validation을 통해 유효성을 검사 하기 위해서는 @valid: jakarta.​validation 를 사용해야한다
  • @RequestBody @Valid Validation requestBody

@NotNull

  • null 값을 허용하지 않음
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Validation {
	
	@NotNull
	private String notNull;
}

@NotEmpty

  • 문자열 타입에서 null과 빈 문자열("") 허용하지 않음
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Validation {
	@NotBlank
	private String notBlank;
}

@NotBlank

  • 문자열 타입에서 null, 빈문자열(""), 공백문자열(" ")을 허용하지 않음
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Validation {
	@NotBlank
	private String notBlank;
}

⚠️주의점
tip : clinet로부터 데이터를 받을때는 기본형 데이터타입(null존재 유무)을 쓰지 않는게 좋다

@Notnull
private int number;
  • int 같은 경우는 null이라는 값이 존재하지 않기 때문에 @Notnull검사에 걸리지 않음
  • int -> Integer
  • private Integer number
@NotBlank
private Integer number;
  • NotBlank 같은 경우 문자열 타입에서만 사용이 가능

@Length(min=?, max=?)

  • 문자열 타입에서 길이의 최소 최대를 지정
  • null이면 검사하지 않음
public class Validation {
	@Length(min=4)
	@NotNull
	private String length;
}

@Min() , @Max()

  • 정수의 최소 최대 값을 지정
public class Validation {
	@Min(10)
	@Max(20)
	private Integer minMax;
}

@Range(min=?, max=?)

  • 최소 최대 범위를 지정
public class Validation {
	@Range(min=10, max=20)
	private Integer range;
}

@Size(min=? max)

  • 컬렉션의 길이 최소 최대값을 지정
public class Validation {
	@Size(min=2, max=4)
	private Integer[] size;
}

@Pattern(regexp=정규식)

  • 정규식을 이용하여 문자열의 패턴을 검사
    영(소/대)문자만 입력받을수 있게 정규식 생성
public class Validation {
	@Pattern(regexp="^[a-zA-Z]*$")
	private String pattern;
}

8개에 해당하는 Validation 검사 결과

  • 유효성 검사에서 정상적으로 입력 받지 않은 결과 400번 에러 발생

0개의 댓글