BE Study/Spring

회원 서비스 개발

subengineer 2024. 6. 20. 20:28
package hello.hello_spring.service;

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

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

public class MemberService {
    private final MemberRepository memberRepository = new MemoryMemberRepository();

    /**
     * 회원가입
     */
    public Long join(Member member){
        //같은 이름 중복회원 x
        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);
    }
}

repository와 service를 개발하면서 service는 보다 business logic과 관련된 naming이 들어가는 느낌이 들었다.

아무래도 협업을 하며 다른 사람과 소통이 중요한 파트이다보니 이런 특징이 나온 게 아닐까 싶다. 회원 정보 조회 서비스를 만들어봤는데 이를 검증하기 위해 저번에 배웠던 테스트를 활용해보도록 하겠다.