Spring Boot 더 간편한 검증, Validation 라이브러리

이메일 인증을 할 때 올바른 이메일 형식이 아니면 이메일인증을 할 수 없고,
비밀번호의 경우 보안때문에 특정 규칙에 맞게 입력을 해야 한다.

Pattern.matches([정규식],[대상]);

이런식으로 체크를 해야하지만, Spring 라이브러리 중 Validation 있다는것을 알게 되었고, 이는 내가 개발을 하는데 있어 편리함을 가져다 주었다.


설치

필자는 Gradle을 사용하여 프로젝트를 작성하였고,
Gradle 은 implementation 를 해주어 해당 라이브러리를 추가해줄 수 있었다.

//Gradle
implementation 'org.springframework.boot:spring-boot-starter-validation'

이렇게 해주고, 내 Entity에서 Validation을 위한 어노테이션을 추가해주면 된다.

Entity에 적용

public class RegisterRequest {
    @NotEmpty(message = "이름 입력은 필수 입니다.")
    private String userName;

    @NotEmpty(message = "이메일 입력은 필수 입니다.")
    @Pattern(regexp = "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,6}$", message = "이메일 형식에 맞지 않습니다.")
    private String userEmail;

    @NotEmpty(message = "비밀번호 입력은 필수 입니다.")
    @Size(min = 5, message = "비밀번호는 최소 5자 이상이어야 합니다.")
    private String userPassword;
}

이와같은 형식으로 Validation을 위한 어노테이션을 추가해주면 손쉽게 데이터 형식 확인을 할 수 있다.

제가 확인한 Validatio에서 사용할 수 있는 타입은 아래와 같습니다

  • @Size ← min 값과 max값을 이용한 최소/최대 입력값
  • @Email ← email 입력을 받을 때 확인해주는 형식. 이 기능은 거의 Pattern을 이용한 정규식으로 많이 사용한다
  • @Pattern ← 정규식을 이용한 값 검증
  • @NotEmpty ← null이거나 빈 값이 아닐때만 허용
  • @NotNull ← null만 허용하지 않음
  • @Null ← null만 허용

이 외에도 다양한 값들이 있지만, 우선 내가 사용해본건 위에것들이 전부이다.

Controller에 적용

@RestController
public class UserController {
    @PostMapping("/api/user")
    public ResponseEntity<?> getUser(@Validated RegisterRequest userReq, Errors errors){
        if(errors.hasErrors()) return new ResponseEntity(HttpStatus.BAD_REQUEST);
        return new ResponseEntity(HttpStatus.OK);
    }
}

보이는것처럼 @Validated 어노테이션을 사용하면 자동으로 검증을 해준다.

그럼 그냥 post로 값을 보내기만 하면 되는거야?

그렇다. 그냥 post로 RegitserReqeust의 형식에 맞춰 값을 보내기만하면 된다.

좋은 웹페이지 즐겨찾기