์กฐํํ ๋น์ด ๋ชจ๋ ํ์ํ ๋, List, Map
์๋์ ์ผ๋ก ์ ๋ง ํด๋น ํ์ ์ ์คํ๋ง ๋น์ด ๋ค ํ์ํ ๊ฒฝ์ฐ๋ ์๋ค.
์๋ฅผ ๋ค์ด์ ํ ์ธ ์๋น์ค๋ฅผ ์ ๊ณตํ๋๋ฐ, ํด๋ผ์ด์ธํธ๊ฐ ํ ์ธ์ ์ข
๋ฅ(rate, fix)๋ฅผ ์ ํํ ์ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
์คํ๋ง์ ์ฌ์ฉํ๋ฉด ์์ ๋งํ๋ ์ ๋ต ํจํด์ ๋งค์ฐ ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์๋ค.
@Test
void findAllBean() {
ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class,DiscountService.class);
new AnnotationConfigApplicationContext() ๋ฅผ ํตํด ์คํ๋ง ์ปจํ ์ด๋๋ฅผ ์์ฑํ๋ค.
AutoAppConfig.class , DiscountService.class ๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋๊ธฐ๋ฉด์ ํด๋น ํด๋์ค๋ฅผ ์๋์ผ๋ก ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ค.
์ ๋ฆฌํ๋ฉด ์คํ๋ง ์ปจํ
์ด๋๋ฅผ ์์ฑํ๋ฉด์,
ํด๋น ์ปจํ ์ด๋์ ๋์์ AutoAppConfig , DiscountService ๋ฅผ ์คํ๋ง ๋น์ผ๋ก ์๋ ๋ฑ๋กํ๋ค.
static class DiscountService {
private final Map<String, DiscountPolicy> policyMap;
public DiscountService(Map<String, DiscountPolicy> policyMap) {
this.policyMap = policyMap;
DiscountService๋ Map์ผ๋ก ๋ชจ๋ DiscountPolicy ๋ฅผ ์ฃผ์ ๋ฐ๋๋ค.
์ด๋ fixDiscountPolicy , rateDiscountPolicy ๊ฐ ์ฃผ์ ๋๋ค.
DiscountService discountService = ac.getBean(DiscountService.class);
Member member = new Member(1L,"name", Grade.VIP);
int discountPrice = discountService.discount(member, 10000, "fixDiscountPolicy");
Map<String, DiscountPolicy> : map์ ํค์ ์คํ๋ง ๋น์ ์ด๋ฆ์ ๋ฃ์ด์ฃผ๊ณ ,
๊ทธ ๊ฐ์ผ๋ก DiscountPolicy ํ์ ์ผ๋ก ์กฐํํ ๋ชจ๋ ์คํ๋ง ๋น์ ๋ด์์ค๋ค.
public int discount(Member member, int price, String discountCode) {
DiscountPolicy discountPolicy = policyMap.get(discountCode);
return discountPolicy.discount(member,price);
}
discount () ๋ฉ์๋๋ discountCode๋ก "fixDiscountPolicy"๊ฐ ๋์ด์ค๋ฉด
map์์ fixDiscountPolicy ์คํ๋ง ๋น์ ์ฐพ์์ ์คํํ๋ค.
๋ฌผ๋ก “rateDiscountPolicy”๊ฐ ๋์ด์ค๋ฉด rateDiscountPolicy ์คํ๋ง ๋น์ ์ฐพ์์ ์คํํ๋ค.
์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ - ์ธํ๋ฐ | ๊ฐ์
์คํ๋ง ์ ๋ฌธ์๊ฐ ์์ ๋ฅผ ๋ง๋ค์ด๊ฐ๋ฉด์ ์คํ๋ง์ ํต์ฌ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ , ์คํ๋ง ๊ธฐ๋ณธ๊ธฐ๋ฅผ ํ์คํ ๋ค์ง ์ ์์ต๋๋ค., - ๊ฐ์ ์๊ฐ | ์ธํ๋ฐ...
www.inflearn.com