spring 회원 관리 예제 실습 : 회원 서비스 개발

호연지기·2023년 5월 28일
0

✌️ 회원관리 프로젝트

회원 관리에 필요한 멤버 저장소를 만들었다면 이번엔 작동할 수 있는 회원 서비스 처리를 작성한다.

회원관리 서비스 개발

service 패키지를 만들고 그 안에 MemberService 클래스를 생성한다.

private final MemberRepository memberRepository = new MemoryMemberRepository();

리포지토리 불러오기

💻 MemberService 소스

//회원가입
public Long join(Member member){
    //같은 이름이 있는 중복 회원은 거부
    //command+option+v 단축키로 옵셔널 변환해줌..
    Optional<Member> result = memberRepository.findByName(member.getName());
    result.ifPresent(m -> {
        throw new IllegalStateException("이미 존재하는 회원입니다.");
    });
    memberRepository.save(member);
    return member.getId();

중복 이름은 회원가입이 불가능하다는 전제로 이미 존재하는 이름이 있을 경우엔 이미 존재하는 회원입니다. 메세지를 출력한다.

memberRepository.findByName(member.getName())
        .ifPresent(m -> {
            throw new IllegalStateException("이미 존재하는 회원입니다.");
        });

memberRepository.save(member);
return member.getId();

지금의 내가 봤을 땐 Optional이 붙어있어도 충분히 멋있어보이는데 강의에서는 Optional을 생략하고 코드를 좀 더 깔끔하게 다듬는다.

덕분에 나에겐 약간의 어려움이 더해졌다.

그리고 이렇게 정리가 중복이름 검증용 코드를 메소드로 묶어서 한번 더 코드 정리를...!!

코드 블럭 메소드로 만들기

  1. 코드 묶어서 드래그 후 control + T 누른 뒤 Extract Method 선택
  1. 메소드 이름 지정을 위해 More options에서 이름을 설정해준다.
  1. 강의 따라서 똑같이 validateDuplicateMember로 메소드 이름을 바꿔주었다.
//회원가입
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("이미 존재하는 회원입니다.");
            });
}

그리하여 이렇게 제법 깔끔한 회원가입 서비스 코드가 작성되었다.
중복회원 검증용 메소드를 통과하면 회원 가입이 되는 흐름

💻 MemberService 소스

//전체 회원 조회
public List<Member> findMembers(){
    return memberRepository.findAll();
}

public Optional<Member> findOne(Long memberId){
    return memberRepository.findById(memberId);
}

전체 회원 목록을 조회하는 메소드도 작성한다.

📅 DATE

2023.05.28 작성

profile
사람의 마음에 차 있는 너르고 크고 올바른 기운

0개의 댓글