/* ์ด ๊ธ์ ๊น์ํ๋์ ๊ฐ์๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ๋ ค๊ณ ์์ฑํ ๊ธ์ ๋๋ค.
๊ฐ์ธ์ ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์ฌ๋ฆฌ๋ ๊ธ์ด๋ฏ๋ก ์ค๊ฐ ์ค๊ฐ ์ฝ๋๋ ์๋ต๋์์ต๋๋ค. */
์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ - ์ธํ๋ฐ | ๊ฐ์
์คํ๋ง ์ ๋ฌธ์๊ฐ ์์ ๋ฅผ ๋ง๋ค์ด๊ฐ๋ฉด์ ์คํ๋ง์ ํต์ฌ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ , ์คํ๋ง ๊ธฐ๋ณธ๊ธฐ๋ฅผ ํ์คํ ๋ค์ง ์ ์์ต๋๋ค., ์คํ๋ง ํต์ฌ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ , ์ฑ์ฅํ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์๊ฐ ๋์ด๋ณด์ธ์! ๐ข
www.inflearn.com
AppConfig ๋ฆฌํฉํฐ๋ง
1. ๋ฆฌํฉํฐ๋ง ์
appConfig
public class AppConfig {
public MemberService memberService() {
return new MemberServiceImpl(new MemoryMemberRepository());
}
public OrderService orderService() {
return new OrderServiceImpl(new MemoryMemberRepository(), new FixDiscountPolicy());
}
}
โพ ํ์ฌ appConfig๋ฅผ ๋ณด๋ฉด ์ค๋ณต์ด ์๊ณ , ์ญํ ์ ๋ฐ๋ฅธ ๊ตฌํ์ด ์ ๋ณด์ด์ง ์์
โพ ์ญํ ์ ๋๋ฌ๋ด๊ธฐ ์ํด์ ๋ฉ์๋๋ฅผ ์ถ์ถํด์ ๋ฆฌํฉํ ๋ง ํจ
2. ๋ฆฌํฉํฐ๋ง ํ
appConfig
public class AppConfig {
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
public OrderService orderService() {
return new OrderServiceImpl(memberRepository(), discountPolicy());
}
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
public DiscountPolicy discountPolicy() {
return new FixDiscountPolicy();
}
}
โพ new MemoryMemberRepository() ๋ถ๋ถ์ ์ค๋ณต์ด ์ ๊ฑฐ๋์๋ค. ์ด์ Repository๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ค๋ฉด ํ ๋ถ๋ถ๋ง ์์ ํ๋ฉด ๋๋ค.
โพ appConfig์ ์ญํ ์ด ํ ๋์ ๋ค์ด์จ๋ค.
๐ก ๊ถ๊ธ์ฆ 1
: ์ง์ ์์กด์ฑ์ ์์ฑํ๋ ๊ฒ(new๋ก ๊ฐ์ฒด ์์ฑ)๊ณผ ๋ฉ์๋๋ฅผ ํตํด ์์กด์ฑ์ ์์ฑํ๋๊ฒ์ ์ฐจ์ด
โพ ์ง์ ์์กด์ฑ์ ์์ฑํ๋ ๊ฒฝ์ฐ :
- ๋ง์ผ Repository๋ฅผ DbMemberRepository๋ก ๋ณ๊ฒฝํด์ผ ํ๋ค๋ฉด `new MemoryMemberRepository()` ๋ก ์ง์ ์์ฑํ ์ฝ๋๋ฅผ ๋ชจ๋ ์ฐพ์ ๋ณ๊ฒฝํด์ผ ํ๋ฉฐ, ๋์ค์ ๋ฒ์๊ฐ ์ปค์ง๋ค๋ฉด ๋ค๋ฅธ ์ฝ๋์ ์ํฅ์ ๋ฏธ์น ์ ์๋ค.
- ์ง์ ์์กด์ฑ์ ์์ฑํ๋ฉด ํด๋์ค๊ฐ ํด๋น ์์กด์ฑ์ ๊ฐํ๊ฒ ๊ฒฐํฉ๋์ด ์ถ์ํ ์์ค์ด ๋ฎ์์ง๊ณ ์ฝ๋ ๋ณ๊ฒฝ๊ณผ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์ ์ง๋ค.
โพ ๋ฉ์๋๋ฅผ ํตํด ์์กด์ฑ์ ์์ฑํ๋ ๊ฒฝ์ฐ :
- ๋ง์ผ Repository๋ฅผ DbMemberRepository๋ก ๋ณ๊ฒฝํด์ผ ํ๋ค๋ฉด `memberRepository()`์ ๋ฉ์๋๋ง ์์ ํ๋ฉด ๋๋ค. ์ฝ๋์ ๋ณ๊ฒฝ ๋ฒ์๋ฅผ ์ต์ํ ํ ์ ์๋ค.
- ๋ฉ์๋๋ฅผ ํตํด ์์กด์ฑ์ ์ฃผ์ ํ๋ฉด MemberServiceImpl ํด๋์ค๋ `memberRepository()`๊ฐ ๋ฐํํ๋ `MemberRepository` ์ธํฐํ์ด์ค์ ์์กดํ๋ฏ๋ก ์ถ์ํ๋ฅผ ํตํด ๋ค์ํ ๊ตฌํ์ ํ ์ ์๋ค.
โ ๊ฒฐ๋ก : ์์กด์ฑ ๋ถ๋ฆฌํ ์ ์๊ณ ๋จ์ผ ์ฑ ์ ์์น์ ์ค์ํ๋ฉฐ ์ ์ฐ์ฑ๊ณผ ํ์ฅ์ฑ์ ์ฉ์ดํ๋ค.