์๋ ๋น ๋ฑ๋ก
(์ปดํฌ๋ํธ ์ ๋ ธํ ์ด์ ์ด ๋ถ์ ๊ฒ๋ค์ ์ ์ธํ๊ณ ) @Bean์ ํตํด ๋ฑ๋ก๋๋ ๊ฒ. AppConfig์ ๊ฐ์ด ์๋ฐ ์ค์ ํ์ผ์ ์ถ๊ฐํ์ฌ ์๋ ๋น ๋ฑ๋กํ๋ฉด ๋๋ค.
์๋ ๋น ๋ฑ๋ก์ ์ธ์ ์ฌ์ฉํ๋ฉด ์ข์๊น?
1. ๊ธฐ์ ์ง์ ๋น
์ ํ๋ฆฌ์ผ์ด์ ์ ํฌ๊ฒ ์ ๋ฌด ๋ก์ง๊ณผ ๊ธฐ์ ์ง์ ๋ก์ง์ผ๋ก ๋๋ ์ ์๋ค.
์ ๋ฌด ๋ก์ง ๋น
: ์น์ ์ง์ํ๋ ์ปจํธ๋กค๋ฌ, ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์ด ์๋ ์๋น์ค, ๋ฐ์ดํฐ ๊ณ์ธต์ ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฑ์ด ๋ชจ๋ ์ ๋ฌด ๋ก์ง์ด๋ค. ๋ณดํต ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ์ ๊ฐ๋ฐํ ๋ ์ถ๊ฐ๋๊ฑฐ๋ ๋ณ๊ฒฝ๋๋ค.- ์ ๋ฌด ๋ก์ง์ ์ซ์๋ ๋งค์ฐ ๋ง๊ณ ์ ์ฌํ ํจํด์ ๊ฐ์ง๊ณ ์๋ค. ๋ณดํต ๋ฌธ์ ๊ฐ ๋ฐ์ํด๋ ์ด๋ค ๊ณณ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ๋ช ํํ๊ฒ ํ์ ํ๊ธฐ ์ฝ๋ค.
๊ธฐ์ ์ง์ ๋น
: ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๋ ๊ณตํต ๊ด์ฌ์ฌ(AOP)๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ด๋, ๊ณตํต ๋ก๊ทธ ์ฒ๋ฆฌ ์ฒ๋ผ ์ ๋ฌด ๋ก์ง์ ์ง์ํ๊ธฐ ์ํ ํ๋ถ ๊ธฐ์ ์ด๋ ๊ณตํต ๊ธฐ์ ๋ค์ด๋ค.- ์ ๋ฌด ๋ก์ง๊ณผ ๋น๊ตํด์ ์๊ฐ ์ ๊ณ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ๋ฌธ์ ํ์ ํ๊ธฐ ์ด๋ ต๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ฒ์ํ๊ฒ ์ํฅ์ ๋ผ์น๊ธฐ ๋๋ฌธ์ ์๋ ๋น์ผ๋ก ๋ฑ๋กํด์ ์ค์ ์ ๋ณด์ ๋ฐ๋ก ๋ํ๋๊ฒ ํ๋ ๊ฒ์ด ์ ์ง ๋ณด์์ ์ข๋ค.
2. ๋คํ์ฑ์ ์ ๊ทน ํ์ฉํ ๋
DiscountService ๊ฐ ์์กด๊ด๊ณ ์๋ ์ฃผ์ ์ผ๋ก Map<String, DiscountPolicy> ์ ์ฃผ์ ์ ๋ฐ๋ ์ํฉ์ ์๊ฐํด๋ณด์.
์ฌ๊ธฐ์ ์ด๋ค ๋น๋ค์ด ์ฃผ์ ๋ ์ง, ๊ฐ ๋น๋ค์ ์ด๋ฆ์ ๋ฌด์์ผ์ง ์ฝ๋๋ง ๋ณด๊ณ ํ๋ฒ์ ์ฝ๊ฒ ํ์ ํ ์ ์์๊น? ๋ด๊ฐ ๊ฐ๋ฐํ์ผ๋ ํฌ๊ฒ ๊ด๊ณ๊ฐ ์์ง๋ง, ๋ง์ฝ ์ด ์ฝ๋๋ฅผ ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ฐํด์ ๋์๊ฒ ์ค ๊ฒ์ด๋ผ๋ฉด ์ด๋จ๊น? ์๋ ๋ฑ๋ก์ ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ํ์ ํ๋ ค๋ฉด ์ฌ๋ฌ ์ฝ๋๋ฅผ ์ฐพ์๋ด์ผ ํ๋ค.์ด๋ฐ ๊ฒฝ์ฐ ์๋ ๋น์ผ๋ก ๋ฑ๋กํ๊ฑฐ๋ ๋๋ ์๋์ผ๋กํ๋ฉด ํน์ ํจํค์ง์ ๊ฐ์ด ๋ฌถ์ด๋๋๊ฒ ์ข๋ค! ํต์ฌ์ ๋ฑ ๋ณด๊ณ ์ดํด๊ฐ ๋์ด์ผ ํ๋ค!