[11강]
2023. 2. 2. 16:13ㆍSpring 강의/section3
회원 서비스 클래스를 만들어보자.
MemberService
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package hello.hellospring2.service;
import hello.hellospring2.domain.Member;
import hello.hellospring2.repository.MemberRepository;
import hello.hellospring2.repository.MemoryMemberRepository;
import java.util.Optional;
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();
}
}
|
cs |
ifPresent - 값이 있으면 실행하고 아니면 넘어감
findByName 해서 result에 값을 넣었는데 만약 찾아진 이름이 있다면 이미 가입한 회원이란 것이다.
Optional<Member> result이라는 코드가 있는데
Optional로 바로 반환하는 게 좋지 않다.
findByName은 Optional을 반환하기 때문에 Optional의 메소드를 바로 사용할 수 있다.
그러므로 ifPresent를 바로 사용 가능하다.
1
2
3
4
|
memberRepository.findByName(member.getName())
.ifPresent(m -> {
throw new IllegalStateException("이미 존재하는 회원입니다.");
});
|
cs |
지금 보면 로직이 쭉 이어져있는데 이럴거면 메소드로 뽑아내는 게 낫다.
해당 코드를 드래그 하고 ctrl + shift + alt + t를 눌러주면 Refactor This가 뜨고 여기서 Extract Method를 선택하면
자동으로 밖으로 빼준다.
전체 서비스 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
package hello.hellospring2.service;
import hello.hellospring2.domain.Member;
import hello.hellospring2.repository.MemberRepository;
import hello.hellospring2.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
//ifPresent - 값이 있으면 실행하고 아니면 넘어감
//findByName 해서 result에 값을 넣었는데 만약 찾아진 이름이 있다면 이미 가입한 회원이란것
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);
}
}
|
cs |