본문 바로가기

백엔드 개발/SpringMVC

회원서비스(비즈니스 로직) 만들기

1. 코드분석

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

    //회원가입
    public long join (Member member)
    {
        //같은 이름이 있는 중복 회원 발생 시 오류 메세지 보냄 -> 중복 없으면 다음 단계 순차 실행
        vaildateDuplicateMember(member);
        memberRepository.save(member);
        return member.getId();
    }

    private void vaildateDuplicateMember(Member member) { //Member type의 변수 member가 인수로 들어옴.
        memberRepository.findbyName(member.getName()) // 인수의 name이 저장소에 있는지 조회
           .ifPresent(m -> {		//값이 존재하면 밑의 메세지를 내보낸다.
           throw new IllegalStateException("이미 존재하는 회원입니다.");
       });
    }
    //전체 회원 조회
    public List<Member> findMember()
    {
        return memberRepository.findAll();
    }

    public Optional<Member> findOne(Long memberId) { //인수로 실수값 넣으면 해당 값의 id 있는지 찾는다.
        return memberRepository.findbyId(memberId);
    }
}

2. 몰랐던 내용 정리

(1)Optional<T> ~ ifpresent((value) ->{실행문}) //()안은 람다식

: Optional 객체가 값을 가지고 있으면 value로 값이 전달되고, 람다식이 실행됨.

   Optional 객체가 값이 없으면 value가 빔. ()안이 실행되지 않음.

   **해당 예제에서 memberRepository.findbyName은 Optional 객체가 반환 자료형인 매소드 이다.

 

(2) Thorw new Exception("문장")

: 프로그램의 결과가 적절한 상태가 아닐 때, 적절한 상태가 아님을 알리는 문장을 출력함.

**illegalStateException() = 요구된 명령이 적절한 상태가 아님을 나타내는 문장

 

(3)Intellij에서 Ctrl + Alt + M 은 어떤 매소드를 추출하는 단축키! 

:매소드 안의 매소드의 코드가 많아 지저분하고 매소드 내용이 한 눈에 안 보일 때, 사용할 수 있다.

 해당 매소드를 선언만 하고 내용은 겉 매소드의 밖으로 빠진다.

 

(4)public final class 클래스이름 {}

: final은 해당 클래스의 상속을 금지시킨다.