스프링 공부/게시판 프로젝트 만들기

[스프링] 23. MemberService의 registerNewMember를 만들어보자!

장아장 2023. 2. 6. 19:59

이전에 만든 테스트가 동작하게, 하나씩 만들어보아야 겠다. 

 

일단, 아이디 중복을 처리했을 때 동작하는지 코드를 만들어보자. 

private void validateUsername(String username){
    if(memberRepository.findByUsername(username).isPresent())
        throw new UsernameAlreadyInUseException();
}

이런식으로 중복이 되는 것을 닉네임, 이메일에도 처리해주었다. 

 

validateUsername(registerRequestDto.getUsername());
validateNickname(registerRequestDto.getNickname());
validateEmail(registerRequestDto.getEmail());

3개의 validation을 이용해, 값이 존재하는지 확인하고 있을 경우 예외를 반환하게 처리했다. 

 

validatePasswordCheck(registerRequestDto.getPassword(), registerRequestDto.getPasswordCheck());

이후엔 비밀번호를 확인시키는 기능을 구현했는데, 

String.equals(String)의 구조로 간단한 메서드였다. 

 

registerRequestDto.setPassword(bCryptPasswordEncoder.encode(registerRequestDto.getPassword()));
Member member = new Member(registerRequestDto);
memberRepository.save(member);

마지막엔 password를 암호화시켜 담은 후, Member에 생성자로 넣어주었다. 

그렇게 만든 값을 repository에 저장하는 방식으로 로직을 구현하였다. 

 

@Transactional
public void registerNewMember(RegisterRequestDto registerRequestDto){
    validateUsername(registerRequestDto.getUsername());
    validateNickname(registerRequestDto.getNickname());
    validateEmail(registerRequestDto.getEmail());
    validatePasswordCheck(registerRequestDto.getPassword(), registerRequestDto.getPasswordCheck());
    registerRequestDto.setPassword(bCryptPasswordEncoder.encode(registerRequestDto.getPassword()));
    Member member = new Member(registerRequestDto);
    memberRepository.save(member);
}

이렇게 전체적인 메서드를 만들고, 테스트를 동작시켜보았다. 

 

단순하지만, 첫 번째로 회원가입에 대한 기능들을 만들어보았다. 

이제, 정보조회와 수정, 마지막으로 로그인까지 로직을 만들어볼 계획이다.