[Spring Boot+JPA] 회원가입 구현시 아이디 중복체크, 유효성 검사 처리하기

2022. 5. 24. 15:01 Spring Data/Spring Data JPA

1. build.gradle 의존성 추가

implementation 'org.springframework.boot:spring-boot-starter-validation'
  • 스프링부트 버전 2.3 이전에는 web 의존성에 validation이 포함되어있었지만 2.3 버전 이후 분리되었습니다.
  • 따라서 스프링부트 2.3 이후의 버전을 사용하시는 분들은 반드시 해당 의존성을 추가해야합니다.

2. 회원가입 DTO

사용자가 회원가입 폼에 입력한 정보들을 담을 DTO를 생성해야 합니다.

여기서는 간단하게 이메일,비밀번호,닉네임,휴대폰번호 정도만 받아보겠습니다.

@Getter
public class UserDto {
    @NotBlank(message = "닉네임을 입력해주세요.")
    @Size(min = 2, max = 10, message = "닉네임은 2자 이상 10자 이하로 입력해주세요.")
    private String nickname;

    @NotBlank(message = "이메일 주소를 입력해주세요.")
    @Email(message = "올바른 이메일 주소를 입력해주세요.")
    private String email;

    @NotBlank(message = "비밀번호를 입력해주세요.")
    @Size(min = 8, max = 20, message = "비밀번호는 8자 이상 20자 이하로 입력해주세요.")
    private String password;

    @NotBlank(message = "휴대폰 번호를 입력해주세요.")
    @Pattern(regexp = "(01[016789])(\\d{3,4})(\\d{4})", message = "올바른 휴대폰 번호를 입력해주세요.")
    private String phone;
}

 validation 이 지원하는 어노테이션들로 회원가입시 간단한 유효성 검사들을 처리할 수 있습니다.

 1. `@NotBlank` : 닉네임 입력폼이 비어있는 상태로 요청을 보내면 해당 에러메시지가 나타납니다.
 2. `@Size` : 지정된 사이즈에 벗어나는 값 입력시 해당 에러메시지가 나타납니다.
 3. `@Email` : 이메일 형태만 입력이 가능합니다.
 4. `@Pattern` : 지정된 패턴만 입력하게 하여 휴대폰 번호 폼에서 이상한 값들이 요청되는 것을 방지합니다.

3. 이메일 / 닉네임 중복체크하기

위 그림과 같이 [중복확인] 버튼을 눌렀을때 요청되는 URL은 다음과 같습니다.

controller

컨트롤러로 넘어온 값으로 해당 닉네임 또는 이메일이 존재하는지 확인해야 합니다.

닉네임또는 이메일 중복 여부 확인은 UserService에서 진행합니다.

 

service

repository

해당 로직을 실행하면 아이디 또는 이메일이 중복되는 경우 true, 중복되지 않은경우 false가 리턴됩니다.

리턴되는 값에 따라 프론트단에서 알맞게 처리하면 간단하게 중복검사를 진행할 수 있습니다.

 

출처 : https://1-7171771.tistory.com/78?category=885255