์ฐ๋ฆฌ๊ฐ ๋ง๋ ํ์ ๋๋ฉ์ธ์ด ์ ์์ ์ผ๋ก ๋์ํ๋์ง ๋ง๋ค์ด๋ณผ๊ฒ์
์ด ๋ถ๋ถ์ด ๋ค ๊ฐ๋ฐ์ด ๋์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ด ๊ทธ๋ฆผ์ ๋ง๋ค ๊ฒ์ ๋๋ค.
์ค์ ๋ฐํ์์ ๋์์ ํ๋ฉด, ํด๋ผ์ด์ธํธ๋ MemberServiceImpl์ด๋ผ๋ ํ์ ์๋น์ค๋ฅผ ์ฌ์ฉ์ ํ๊ฒ ๋๊ณ ,
๊ทธ ๋ค์์ ํ์ ์๋น์ค๋ ๋ฉ๋ชจ๋ฆฌ ํ์ ์ ์ฅ์, MemoryMemberRepository new ํด๊ฐ์ง๊ณ ๋ฃ์๋๊ฑฐ ์๊ฐ๋์ฃ ?
์ค์ ์ธ์คํด์ค๊ฐ ๊ทธ๋ฆผ์ ์ด๋ ๊ฒ ๋๋ค๊ณ ํ์ต๋๋ค.
ํ์ ํด๋์ค๊ฐ ๋ค์ด์ด๊ทธ๋จ์ ์ ์ ์ธ๊ฑฐ๊ณ ,
๊ฐ์ฒด ๋ค์ด์ด๊ทธ๋จ์ ๋์ ์ธ ๊ฒ์ ๋๋ค.
new ํด์ ์ค์ ๋ค์ด๊ฐ์ผ ๊ทธ๊ฑธ ์ ์ ์์์์
์ด์ ์ค์ ์คํํ๊ณ ํ ์คํธ ํด๋ณด๊ฒ ์ต๋๋ค.
MemberApp์ ์์ฑํ๊ณ
psvm์ ์น๊ณ ์ํฐ๋ฅผ ์น๋ฉด ์๋์ผ๋ก ์๊ธด๋ค!
์ฌ๊ธฐ์ ์๋๋์ง ๊ฐ๋จํ๊ฒ ํ ์คํธ ํด๋ณผ๊ฒ์
MemberService๋ฅผ ๋ง๋๋๋ฐ, newํด์ MemberServiceImpl์ ์ ํ์ ํด์ค
ctrl+Alt+v
public class MemberApp {
public static void main(String[] args) {
MemberService memberService = new MemberServiceImpl();
//MemberService๋ฅผ ๋ง๋๋๋ฐ, newํด์ MemberServiceImpl์ ์ ํ์ ํด์ค
Member member = new Member(1L, "memberA", Grade.VIP);
//Ctrl+ Alt + v
memberService.join(member);
//joinํด์ ๋ฃ์ผ๋ฉด, ํ์๊ฐ์
์ด ๋๊ฒ ์ฃ
}
}
id๊ฐ 1์ด๊ณ (Longํ์ ์ด๋ผ์ l๋ถ์ฌ์ค)
์ด๋ฆ์ memberA๋ผ๊ณ ํ๊ณ ๋ฑ๊ธ์ vip๋ค.
์ด ์ฌ๋์ด ์ ๋๋ก ๊ฐ์ ์ด ๋์๋ ์ง ํ์ธํด๋ณด๋ฉด ๋๊ฒ ์ฃ
Member findMember = memberService.findMember(1L);
๊ฐ์ ํ member์ findMember๊ฐ ๋๊ฐ์ผ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ํ๋๋๋ก ๋์๊ฒ ์ฃ
๋จ์ํ๊ฒ ์ฐ์ด๋ณผ๊ฒ์
soutv ์น๋ฉด ์์๊ฑฐ ๋๊ฐ์ด ๋์จ๋ค.
public class MemberApp {
public static void main(String[] args) {
MemberService memberService = new MemberServiceImpl();
//MemberService๋ฅผ ๋ง๋๋๋ฐ, newํด์ MemberServiceImpl์ ์ ํ์ ํด์ค
Member member = new Member(1L, "memberA", Grade.VIP);
//Ctrl+ Alt + v
memberService.join(member);
//joinํด์ ๋ฃ์ผ๋ฉด, ํ์๊ฐ์
์ด ๋๊ฒ ์ฃ
Member findMember = memberService.findMember(1L);
System.out.println("new member = " + member.getName());
System.out.println("find Member= " + findMember.getName());
}
}
์ง์ง ์์ํ ์๋ฐ๋ก๋ง ๊ฐ๋ฐ์ ํ๊ฒ
๊ทธ๋ฐ๋ฐ ์ด๋ฐ main๋ฉ์๋๋ก ํ ์คํธ ํ๋ ๊ฒ์ ์ข์ ๋ฐฉ๋ฒ์ด ์๋
junit์ด๋ผ๋ ํ ์คํธ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๋๋ค.
MemberServiceTest๋ฅผ ๋ง๋ค์ด์ค๋๋ค.
๋ น์๋ถ์ด ๋จ๋ฉด์ ์ฑ๊ณต!
์์ฆ ํ๋์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐํ๋ ค๋ฉด ํ ์คํธ ์ฝ๋๋ ํ์์ ์ ํ์ด ์๋์ผ
ํ ์คํธ ์ฝ๋ ์์ฑ๋ฐฉ๋ฒ์ ํ์๋ก ์์ ์ผ ํจ
๊ทธ๋งํผ ํ ์คํธ ์ฝ๋๋ฅผ ์ ์์ฑํ๋ ๊ฒ ์ค์ํฉ๋๋ค.
ํ์ ๋๋ฉ์ธ ์ค๊ณ์ ๋ฌธ์ ์
- ์ด ์ฝ๋์ ์ค๊ณ์ ๋ฌธ์ ์ ์ ๋ฌด์์ผ๊น์?
- ๋ค๋ฅธ ์ ์ฅ์๋ก ๋ณ๊ฒฝํ ๋ OCP์์น์ ์ ์ค์ํ ๊น์?
- DIP๋ฅผ ์ ์งํค๊ณ ์์๊น์?
-> ์์กด๊ด๊ณ๊ฐ ์ธํฐํ์ด์ค ๋ฟ๋ง ์๋๋ผ ๊ตฌํ๊น์ง ๋ชจ๋ ์์กดํ๋ ๋ฌธ์ ์ ์ด ์์
-> ์ฃผ๋ฌธ๊น์ง ๋ง๋ค๊ณ ๋์ ๋ฌธ์ ์ ๊ณผ ํด๊ฒฐ ๋ฐฉ์์ ์ค๋ช ํ๊ฒ ์!
DIP๋ฅผ ์์กดํ๊ณ ์๋ ๊ฒ,,,
https://link.coupang.com/a/UtP2e
์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ:์คํ๋ง ๋ฐ์ดํฐ ์์ ํ๋ก์ ํธ๋ก ๋ฐฐ์ฐ๋ ์ ์์ ๋ถ ํ์ค ๋ฐ์ดํฐ๋ฒ ์ด
COUPANG
www.coupang.com
"์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ต๋๋ค."
'Spring > ๐[spring] ํต์ฌ์๋ฆฌ-๊ธฐ๋ณธํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ์ ๋๋ฉ์ธ ๊ฐ๋ฐ (0) | 2023.03.08 |
---|---|
ํ์ ๋๋ฉ์ธ ์ค๊ณ (0) | 2023.03.08 |
๋น์ฆ๋์ค ์๊ตฌ์ฌํญ๊ณผ ์ค๊ณ (0) | 2023.03.07 |
ํ๋ก์ ํธ ์์ฑ (0) | 2023.02.24 |