쌓고 쌓다

회원 서비스 클래스 작성 본문

프로그래밍/spring

회원 서비스 클래스 작성

승민아 2023. 5. 2. 21:39

회원 서비스

회원 리포지토리랑 도메인을 사용하여 비즈니스 로직을 작성

회원 리포지토리에는 멤버를 넣었다 뺐다 느낌이지만 회원 서비스 클래스는 join 등.. 비즈니스에 가까움

 

MemberService

package hello.hellospring.service;

public class MemberService {

    private final MemberRepository memberRepository = new MemoryMemberRepository();

    /* 회원가입 */
    public Long join(Member member) {
        validateDuplicateMember(member);
        memberRepository.save(member);
        return member.getId();
    }

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

    /* id 조회 */
    public Optional<Member> findOne(Long memberId) {
        return memberRepository.findById(memberId);
    }

    private void validateDuplicateMember(Member member) {
        memberRepository.findByName(member.getName())
                .ifPresent(m -> {
                    throw new IllegalStateException("이미 존재하는 회원.");
                });
    }
}

ifPresent?

Optional의 메소드로 Optional 안에 null 값이 아닌 어떤 값이 있으면 람다식이 동작한다.

즉, Name으로 검색했더니 Member가 존재하면 에러를 발생시키는 방법으로 구현.

Optional 객체의 유무에 따라 ifPresent처럼 실행할 수 있는 메소드 종류는 많다.

 

illegalStateException?

자바에서 예외처리는 너무 다양하군요~...

illegalStateException 에러는 객체 상태가 메소드 호출을 처리하기에 적절치 않을 때 사용한다.

 

Comments