API/이론

52. [ JAVA ] Spring Boot : 데이터 유효성 검사 적용방법(validation)

천재단미 2025. 1. 10. 16:47
728x90
반응형

 

 

 

 

 

 Validation(유효성 검사)란?

 

Validation(유효성 검사)은 데이터의 정확성과 일관성을 확인하는 프로세스입니다.

 

1. 역할

  • 데이터 무결성 보장: 시스템에 입력되는 데이터가 정확하고 유효한지 확인합니다.
  • 보안 강화: 악의적인 데이터 입력을 방지하여 시스템의 보안을 향상합니다.
  • 사용자 경험 개선: 잘못된 데이터 입력 시 즉각적인 피드백을 제공하여 사용자 경험을 개선합니다.
  • 비즈니스 로직 지원: 비즈니스 규칙에 맞는 데이터만 처리되도록 보장합니다.

 

2. 구현 방식

  • 클라이언트 측 검증: 브라우저에서 JavaScript를 사용하여 데이터를 검증합니다.
  • 서버 측 검증: 백엔드 코드에서 데이터의 유효성을 검사합니다.
  • 데이터베이스 제약 조건: 데이터베이스 레벨에서 데이터 무결성을 보장합니다.

 

3. 자동화 방법

 

Spring Boot에서 위와 같이 Validation을 추가하여 프로젝트에 를 실행하면 됩니다. 

 

1) 의존성 추가

위와 같은 방법 외에도 아래와 같이 의존성을 추가해 주면 됩니다. 

Mavin 파일에 추가해주면 됩니다. 

xml<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

 

2) 모델 클래스에 제약 조건 추가

유효성을 검사할 필드에 Bean Validation 어노테이션을 사용하여 제약 조건을 설정합니다.

javapublic class User {
    @NotBlank(message = "이름은 필수입니다")
    private String name;

    @Email(message = "올바른 이메일 형식이 아닙니다")
    private String email;

    @Min(value = 18, message = "나이는 18세 이상이어야 합니다")
    private int age;
}

 

3) 컨트롤러에서 @Valid 사용

컨트롤러 메서드의 파라미터에 @Valid 어노테이션을 추가하여 유효성 검사를 활성화합니다.

java@PostMapping("/user")
public ResponseEntity<String> createUser(@Valid @RequestBody User user) {
    // 유효성 검사를 통과한 경우 실행되는 로직
    return ResponseEntity.ok("사용자가 생성되었습니다");
}

 

4. 주요  어노테이션

이 방법을 사용하시면 코드의 중복을 줄이고, 비즈니스 로직과 유효성 검사 로직을 분리하여 코드의 가독성과 유지보수성을 향상할 수 있습니다.

 

@NotNull:

  • 해당 필드가 null이 아님을 검증합니다.
  • 모든 타입에 적용 가능합니다.

 

@NotEmpty:

 

  • 문자열이나 컬렉션이 null이 아니며 비어있지 않음을 검증합니다.
  • String, Collection, Map, Array 등에 사용할 수 있습니다.

 

@NotBlank:

 

  • 문자열이 null이 아니고, 공백을 제외한 길이가 0보다 큼을 검증합니다.
  • 문자열에만 적용 가능하며, 공백만으로 이루어진 문자열도 허용하지 않습니다.

 

@Size(min = 2, max = 30):

 

  • 문자열, 컬렉션, 배열 등의 크기가 지정된 범위 내에 있는지 검증합니다.
  • 최소값(min)과 최대값(max)을 지정할 수 있습니다.

 

@Email:

 

  • 문자열이 유효한 이메일 주소 형식인지 검증합니다.
  • 정확한 이메일 주소 검증보다는 기본적인 형식 검사를 수행합니다.

 

@Min(18):

 

  • 숫자 값이 지정된 최소값 이상인지 검증합니다.
  • 정수형 및 실수형 필드에 적용 가능합니다.

 

@Max(100):

 

  • 숫자 값이 지정된 최대값 이하인지 검증합니다.
  • 정수형 및 실수형 필드에 적용 가능합니다.

 

@Pattern(regexp = "정규표현식"):

 

  • 문자열이 지정된 정규표현식과 일치하는지 검증합니다.
  • 복잡한 문자열 패턴을 검증할 때 유용합니다.

 

728x90
반응형
home top bottom
}