๐ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ฑ๊ธํค
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณดํต ์ฌ๋ฌ ๊ณ ๊ฐ์ด ๋์์ ์์ฒญ์ ํ๋ค.
- ์คํ๋ง ์๋ ์์ DI ์ปจํ ์ด๋์ธ AppConfig๋ ์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ๊ฐ์ฒด๋ฅผ ์๋ก ์์ฑํ๋ค. → ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น ์ฌํจ
- ํด๊ฒฐ ๋ฐฉ์์ ํด๋น ๊ฐ์ฒด๊ฐ ๋ฑ 1๊ฐ๋ง ์์ฑ๋๊ณ ๊ณต์ ํ๋๋ก ์ค๊ณํ๋ฉด ๋๋ค. → ์ฑ๊ธํค ํจํด
๐ ์ฑ๊ธํค ํจํด์ ๋ฌธ์ ์
- ์ฑ๊ธํค ํจํด์ ๊ตฌํํ๋ ์ฝ๋ ์์ฒด๊ฐ ๋ง์ด ๋ค์ด๊ฐ
- ์์กด๊ด๊ณ์ ํด๋ผ์ด์ธํธ๊ฐ ๊ตฌ์ฒด ํด๋์ค์ ์์กดํจ → DIP ์๋ฐ
- ํด๋ผ์ด์ธํธ๊ฐ ๊ตฌ์ฒด ํด๋์ค์ ์์กดํด์ OCP ์์น์ ์๋ฐํ ๊ฐ๋ฅ์ฑ์ด ๋์
- ํ ์คํธ ํ๊ธฐ ์ด๋ ค์
- ๋ด๋ถ ์์ฑ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ด๊ธฐํํ๊ธฐ ์ด๋ ค์
- private ์์ฑ์๋ก ์์ ํด๋์ค๋ฅผ ๋ง๋ค๊ธฐ ์ด๋ ค์
- ๊ฒฐ๋ก ์ ์ผ๋ก ์ ์ฐ์ฑ์ด ๋จ์ด์ง
๐ ์ฑ๊ธํค ์ปจํ ์ด๋
- ์คํ๋ง ์ปจํ ์ด๋๋ ์ฑ๊ธํค ํจํด์ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๋ฉด์ ๊ฐ์ฒด ์ธ์คํด์ค(์คํ๋ง ๋น)๋ฅผ ์ฑ๊ธํค์ผ๋ก ๊ด๋ฆฌํ๋ค.
- ์ฑ๊ธํค ํจํด์ ์ํ ์ง์ ๋ถํ ์ฝ๋๊ฐ ๋ค์ด๊ฐ์ง ์์๋ ๋๋ค.
- DIP, OCP, ํ ์คํธ, private ์์ฑ์๋ก๋ถํฐ ์์ ๋กญ๊ฒ ์ฑ๊ธํค์ ์ฌ์ฉํ ์ ์๋ค.
๐ ์ฑ๊ธํค ์ ์ฉ ํ
- ์คํ๋ง ์ปจํ ์ด๋ ๋๋ถ์ ๊ณ ๊ฐ์ ์์ฒญ์ด ์ฌ๋๋ง๋ค ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ ์ด๋ฏธ ๋ง๋ค์ด์ง ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ์ฌ ํจ์จ์ ์ผ๋ก ์ฌ์ฌ์ฉํ ์ ์๋ค.
๐ ์ฑ๊ธํค ๋ฐฉ์ ์ฃผ์์
- ์ฌ๋ฌ ํด๋ผ์ด์ธํธ๊ฐ ํ๋์ ๊ฐ์ ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์ฑ๊ธํค ๊ฐ์ฒด๋ ์ํ๋ฅผ ์ ์ง(stateful)ํ๊ฒ ์ค๊ณํด์๋ ์๋๋ค.
- ๋ฌด์ํ(stateless)๋ก ์ค๊ณํด์ผ ํ๋ค.
- ํน์ ํด๋ผ์ด์ธํธ์ ์์กด์ ์ธ ํ๋๊ฐ ์์ผ๋ฉด ์๋จ
- ํน์ ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ ํ๋๊ฐ ์์ผ๋ฉด ์๋จ
- ๊ฐ๊ธ์ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅ
- ํ๋ ๋์ ์๋ฐ์์ ๊ณต์ ๋์ง ์๋ ์ง์ญ๋ณ์, ํ๋ผ๋ฏธํฐ, ThreadLocal ๋ฑ์ ์ฌ์ฉํด์ผ ํจ
๐ ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์ฑ๊ธํค ๋น์ ๋ณด์ฅํ๋ ์๋ฆฌ
- ์คํ๋ง์ ํด๋์ค์ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์กฐ์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(CGLIB)๋ฅผ ์ฌ์ฉํ์ฌ @Configuration์ ์ ์ฉํ AppConfig๋ฅผ ์์๋ฐ์ ์์์ ๋ค๋ฅธ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ๋ค๋ฅธ ํด๋์ค๋ฅผ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ค.
- ์ด ์์์ ๋ค๋ฅธ ํด๋์ค๊ฐ ์ฑ๊ธํค์ด ๋ณด์ฅ๋๋๋ก ํด์ค๋ค.
- ๋น์ ๋ฑ๋กํ ๋ ๋น์ด ์ด๋ฏธ ์กด์ฌํ๋ฉด ์กด์ฌํ๋ ๋น์ ๊ฐ์ ธ์ค๊ณ , ์๋ค๋ฉด ์์ฑํด์ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๊ณ ๋ฐํํ๋ค.
- ๋ง์ฝ ์ค์ ์ ๋ณด์ @Configuration์ ์ ์ฉํ์ง ์๊ณ @Bean์ ์ฌ์ฉํ๋ฉด ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋์ง๋ง ์ฑ๊ธํค์ ๋ณด์ฅํ์ง๋ ์๋๋ค.
๊ฐ์ ๋งํฌ
์คํ๋ง ํต์ฌ ์๋ฆฌ - ๊ธฐ๋ณธํธ - ์ธํ๋ฐ | ๊ฐ์
์คํ๋ง ์ ๋ฌธ์๊ฐ ์์ ๋ฅผ ๋ง๋ค์ด๊ฐ๋ฉด์ ์คํ๋ง์ ํต์ฌ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ , ์คํ๋ง ๊ธฐ๋ณธ๊ธฐ๋ฅผ ํ์คํ ๋ค์ง ์ ์์ต๋๋ค., - ๊ฐ์ ์๊ฐ | ์ธํ๋ฐ...
www.inflearn.com