본문 바로가기
스프링 Spring/스프링 입문

[회원 관리 예제 - 백엔드 개발] 회원 서비스 개발

by 코딩개발 2022. 1. 13.
728x90
반응형

회원 서비스 개발

 

public class MemberService {

    private final MemberRepository memberRepository = new MemoryMemberRepository();

    /**
     * 회원 가입
     */
    public Long join(Member member) {
        // 같은 이름이 있는 중복 회원X
        Optional<Member> result = memberRepository.findByName(member.getName());
        result.ifPresent(m -> {
            throw new IllegalStateException("이미 존재하는 회원입니다.");
        });
        memberRepository.save(member);
        return member.getId();
    }
}

 

Optional<Member> result 부분을 합쳐서 아래와 같이 간결하게 만듬

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

 

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

 

위 코드를 드래그 하여 선택하고

ctrl + alt + shift + T > Extract Method... 선택 후 메소드 이름 validateDuplicateMember로 설정

 

그러면 아래와 같은 코드로 수정된다.

public Long join(Member member) {
    validateDuplicateMember(member);
    memberRepository.save(member);
    return member.getId();
}

private void validateDuplicateMember(Member member) {
    // 같은 이름이 있는 중복 회원X
    memberRepository.findByName(member.getName())
        .ifPresent(m -> {
            throw new IllegalStateException("이미 존재하는 회원입니다.");
        });
}

 

전체 회원 조회와 findOne() 을 추가 하면 아래와 같은 코드가 나오게 된다.

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) {
        // 같은 이름이 있는 중복 회원X
        memberRepository.findByName(member.getName())
            .ifPresent(m -> {
                throw new IllegalStateException("이미 존재하는 회원입니다.");
            });
    }

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

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

 

 

참고

service 코드는 비즈니스에서 가져온 용어 사용, 비즈니스에 의존적으로 설계

 

 


<출처>

인프런 강의 "스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술"을 정리한 것 입니다.

 

[무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의

스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., 스프링 학습 첫 길잡이! 개발 공부의 길을 잃지 않도록 도와드립니다. 📣 확인해주세

www.inflearn.com

 
728x90
반응형

댓글