Spring/[์ธํ๋ฐ] ์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ (3) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ ์ปดํฌ๋ํธ ์ค์บ ํด๋น ํฌ์คํ ์ ๊น์ํ๋์ ์ธํ๋ฐ ๊ฐ์(์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ)๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. @ComponentScan ์ปดํฌ๋ํธ ์ค์บ์ ์ฌ์ฉํ์ง ์๊ณ ์คํ๋ง ๋น์ ๋ฑ๋กํ ๋ ์๋์ ๊ฐ์ด @Bean(๋๋ XML์ )์ ํตํด์ ์ค์ ์ ๋ณด๋ฅผ ์ง์ ๋ฑ๋กํ ์คํ๋ง ๋น์ ๋์ดํด์ผํ๋ค. // ์ปดํฌ๋ํธ ์ค์บ์ ์ฌ์ฉํ์ง ์๊ณ ๋น์ ๋ฑ๋กํ๋ Configuration @Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { return new OrderServi.. ์คํ๋ง ํต์ฌ ์๋ฆฌ ์ดํด ํด๋น ํฌ์คํ ์ ๊น์ํ๋์ ์ธํ๋ฐ ๊ฐ์(์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ)๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ "์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋์ ๊ณต์ฐ์ด๋ผ๊ณ ํ์ ๋, ์คํ๋ง์ ๊ณต์ฐ์ ๋ฐฐ์ญ(์ญํ )์ ๋ง๋ ๋ฐฐ์ฐ(๊ตฌํ์ฒด)๋ฅผ ์ญ์ธํ๋ ๊ณต์ฐ ๊ธฐํ์๋ผ๊ณ ํ ์ ์๋ค." ์๋ ์ฝ๋๋ ๊ฐ์ฒด ์งํฅ ์ค๊ณ ์์น ์ค OCP์ DIP๋ฅผ ์๋ฐํ๊ณ ์๋ค. public class OrderServiceImpl implements OrderService { // private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); ... } OCP ์๋ฐ OCP :.. ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ ์คํ๋ง ํด๋น ํฌ์คํ ์ ๊น์ํ๋์ ์ธํ๋ฐ ๊ฐ์(์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ)๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค. ์คํ๋ง์ ํ์ EJB (Enterprise Java Beans) 2000๋ ๋ ์ด๋ฐ, ์๋ฐ ์ง์์ ํ์ค์ผ๋ก ์ฌ์ฉ๋๋ ๊ธฐ์ ํธ๋์ญ์ ์ค์ , ๋ถ์ฐ๊ธฐ์ ๋ฑ ์ด๋ก ์์ผ๋ก ์ข์ ์ ๋ค์ด ์์์ง๋ง, ๋ณต์กํ๊ณ EJB์ ์์กด์ ์ธ ์ฝ๋๋ฅผ ์์ฑํด์ผํ๋ ๋ฑ ์ฅ์ ์ ๋์ด์๋ ๋ค์ํ ๋ฌธ์ ์ ์ด ์์์ 2002๋ ๋ก๋ ์กด์จ ์ฑ ์ถ๊ฐ EJB์ ๋ฌธ์ ์ ์ ์ง์ ํ๋ฉฐ, EJB ์์ด๋ ์ถฉ๋ถํ ๊ณ ํ์ง์ ํ์ฅ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์์์ ๋ณด์ฌ์ฃผ๊ณ , 30,000๋ผ์ธ ์ด์์ ๊ธฐ๋ฐ ๊ธฐ์ ์ ์์ ์ฝ๋๋ก ์ ๋ณด์ ์ฑ ์ถ๊ฐ ์งํ ์ ๊ฒ ํ ๋ฌ์ ์ ์นด๋กํ๊ฐ ๋ก๋ ์กด์จ์๊ฒ ์คํ์์ค ํ๋ก์ ํธ๋ฅผ ์ ์ ์ ํต์ ์ธ J2EE(EJB)๋ผ๋ ๊ฒจ์ธ์ ๋์ด ์๋ก์ด ์์์ด๋ผ๋ ๋ป์ผ.. ์ด์ 1 ๋ค์