๐ก ์๋น์ค๋, ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๊ณ์ธต์ ๋งํ๋ค. ์ฆ, ์ฌ์ฉ์๋ฅผ ๋ฑ๋กํ๊ฑฐ๋ ์ฃผ๋ฌธ์ ์ฒ๋ฆฌํ๋ ๋น์ฆ๋์ค ๋ก์ง ์ด ์ฌ๊ธฐ์ ๋ด๊ธด๋ค. ์ปจํธ๋กค๋ฌ์์ ์์ฒญ์ ๋ฐ์ผ๋ฉด, ์๋น์ค๊ฐ ์ผ์ ์ฒ๋ฆฌํ๊ณ , ํ์ํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ ์ฅํ๋ค.
ํ์ผ ๊ฒฝ๋ก: src/main/java/๋ง๋ ํ์ผ๋ช /service(๋ง๋ค์ด์ผํจ)/MemberService
package section4.section4_spring.service;
import section4.section4_spring.domain.Member;
import section4.section4_spring.repository.MemberRepository;
import section4.section4_spring.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
Optional<Member> result = memberRepository.findByname(member.getName());
result.ifPresent(m -> { //m์ result ๊ฐ์ ์๋ฏธํ๋ค. ๋๋ค์ ๋ด๋ถ ์ฝ๋๋ result ๊ฐ์ด ์กด์ฌํ๋ค๋ฉด ์คํํ๊ฒ ๋ ์ฝ๋์ด๋ค.
throw new IllegalStateException("์ด๋ฏธ ์กด์ฌํ๋ ํ์์
๋๋ค."); //์์ธ๋ฅผ ๋ฐ์์ํค๊ณ ๋ฉ์์ง๋ฅผ ์ ๋ฌ
});
memberRepository.save(member);
return member.getId();
}
public List<Member> findMembers(){
return memberRepository.findAll();
}
public Optional<Member> findOne(Long id) {
return memberRepository.findById(id);
}
}
์ฌ๊ธฐ์ ๋ค๋ฅธ ์ฝ๋๋ ์ด๋ ค์ธ ๊ฒ์ด ์๊ธฐ์ ํ์๊ฐ์ ์ฝ๋๋ง ์ดํด๋ณด์.
result.ifPresent(m -> { //m์ result ๊ฐ์ ์๋ฏธํ๋ค. ๋๋ค์ ๋ด๋ถ ์ฝ๋๋ result ๊ฐ์ด ์กด์ฌํ๋ค๋ฉด ์คํํ๊ฒ ๋ ์ฝ๋์ด๋ค.
throw new IllegalStateException("์ด๋ฏธ ์กด์ฌํ๋ ํ์์
๋๋ค."); //์์ธ๋ฅผ ๋ฐ์์ํค๊ณ ๋ฉ์์ง๋ฅผ ์ ๋ฌ
});
- ifPresent
- result ๋ด๋ถ์ ๊ฐ์ด ์กด์ฌํ๋์ง ํ์ธํ๋ ๊ฒ
- m -> { ... }
- m์ result ๊ฐ ์์ฒด๋ฅผ ์๋ฏธํ๋ค. ๋๋ค์ ์ฝ๋๋ result ๊ฐ์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ ์คํ๋๋ค.