4. 회원 서비스 개발

  1. 회원가입 : 중복회원 검증 기능 구현 - 어떤 값을 리턴한다면 그 부분은 추출해서 메서드로 구현하는 것이 좋다!

  2. 전체 회원 조회

초기 회원가입 기능 구현 예전에는 if(null)...이런식으로 구현했지만 Optional로 한번 감싸게 되면 이 객체가 null이라도 그에 맞게 처리한다. 이 Optional을 사용함으로써 member의 name을 찾아서 가져 ifPresent() 으로 이미 존재하는 경우에 대한 로직을 구현할 수 있다.

package hello.hellospring.service;

import hello.hellospring.domain.Member;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;

import java.util.List;
import java.util.Optional;

public class MemberService {
    private final MemberRepository memberRepository = new MemoryMemberRepository();
    /*
    회원  가입
     */
    public Long join(Member member){
        
        Optional<Member> result = memberRepository.findByName(member.getName());//예전에는 if(null)..이렇게 했다면 현재는 Optional로 한번 감싸면 이 Optional안에 member객체가 있다.이로써 ifPresent 같은 것들을 사용할 수 있다.
        reesult.ifPresent(m -> {//이미 존재한다면 아래의 로직이 동작!
            throw new IllegalStateException("이미 존재하는 회원입니다.");
        });
        
        memberRepository.save(member);
        return member.getId();
    }

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

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

import hello.hellospring.domain.Member;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.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);
    }
}

Last updated