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은 해당 클래스의 상속을 금지시킨다.
'백엔드 개발 > SpringMVC' 카테고리의 다른 글
컴포넌트 스캔과 의존관계 설정 (0) | 2022.12.01 |
---|---|
회원 서비스 테스트 (0) | 2022.12.01 |
Api Test build 코드 분석 (0) | 2022.11.30 |
회원 도메인과 레포지토리 만들기 (0) | 2022.11.29 |
Web 애플리케이션 계층 구조 (0) | 2022.11.29 |