☞Project/휘핑크림
[스프링부트] 개발 전 테스트 회원 서비스 개발 작성04
jju_developer
2023. 3. 23. 19:49
728x90
안녕하세요 jju_developer입니다.
이번시간에는 본격적으로 테스트 삼아 회원 서비스 개발에 대해서 보도록 하겠습니다.
회원정보는 지난 시간 링크를 통해서 꼭 참고 먼저 하시기 바랍니다!!!
1. java -> service -> MemberService
회원 서비스를 만들면 안에 회원 저장소가 있어야 합니다.
그래서 회원 서비스 안에 회원저장소를 private로 만들고
회원 가입 서비스부터 만들도록 하겠습니다.
private final MemberRepository memberRepository = new MemoryMemberRepository();
가입을 하면 임의로 아이디만 반환하도록 지정하였습니다.
같은 이름은 가입을 할 수 없도록 만들기... 왜냐면 회원 아이디는 우리가 지정해 주는 아이디기 때문
여기서 회원 저장소에서 findByName으로 값을 찾아봅니다(회원에서 이름을 찾아 옴)
이것을 result에 담고, 만약 이 결과가 ifPresent 값이 있으면
m(회원)이 존재하면 IllegalStateException ("이미 존재하는 회원입니다.")가 반환되도록
만들기!!
//회원가입
public Long join(Member member){
memberRepository.findByName(member.getName())
.ifPresent(m->{
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
memberRepository.save(member);
return member.getId();
-> 조인 메서드
회원가입 메서드에 존재하는 것은 이미 존재하는 회원인지 확인하고
그게 아니라면 회원 저장소에 회원을 저장하고 회원의 아이디를 반환해 주었습니다.
여기서
memberRepository.findByName(member.getName())
.ifPresent(m->{
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
이 부분만 보면 로직이 쭉 나오는 경우에는 메서드로 뽑는 게 좋습니다.
맥에서 컨트롤+T를 누르면 (커맨드 옵션 M)
이거를 눌러서 따로 빼주었습니다.
그다음에 회원조회 기능도 만들었습니다.
전체 코드는 아래와 같습니다.
package org.project.whipping.service;
import org.project.whipping.domain.Member;
import org.project.whipping.repository.MemberRepository;
import org.project.whipping.repository.MemoryMemberRepository;
import java.util.List;
import java.util.Optional;
public class MemberService {
//회원 저장소 먼저 불러오기
private final MemberRepository memberRepository = new MemoryMemberRepository();
//회원가입
public Long join(Member member){
validateDuplicateMember(member);
memberRepository.save(member);
return member.getId();
}
//중복 회원 검증
private void validateDuplicateMember(Member member) {
memberRepository.findByName(member.getName())
.ifPresent(m->{
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
}
//전체 회원 조회
public List<Member> findMembers(){
return memberRepository.findAll();
}
public Optional<Member> findOne(Long memberId){
return memberRepository.findByID(memberId);
}
}
/* 옵셔널을 바로 반환하는것은 좋지 않다.s
Optional<Member> result = memberRepository.findByName(member.getName());
result.ifPresent(m->{
throw new IllegalStateException("이미 존재하는 회원입니다.")
});
*/
다음 시간에는 회원 서비스 클래스의 코드가 실행되는지에 대해
테스트를 해보도록 하겠습니다~!!
고생하셨습니다.
728x90