์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ํฌ๋กค๋ง
- Python
- ๋๋ฆผ์ฝ๋ฉ
- HTML
- ๊ฐ๋ฐ
- KDT
- JS
- ์๊ณ ๋ฆฌ์ฆ
- ์ฝ๋ฉ์ ํ
- ํ๋ก๊ทธ๋๋จธ์ค
- error
- ๋ ธ๋ง๋์ฝ๋
- ํ๋ก์ ํธ
- fe
- ํ ์ดํ๋ก์ ํธ
- react
- javascript
- Til
- ์ฝ๋ฉํ ์คํธ
- ๊ทธ๋ฆฌ๋
- CSS
- node.js
- ํ์ด์ฌ
- heapq
- ํ๋ก ํธ์๋
- mongodb
- ๋ชจ๊ฐ์ฝ
- ์ฝ๋ฉ
- ๊ตญ๋น์ง์
- ๋ฐฑ์ค
- Today
- Total
๐ฑ → ๐ณ
[Spring] IoC, DI๋? ๋ณธ๋ฌธ
IoC(Inversion of Control)๋?
IoC๋ Inversion of Control์ ์ค์ ๋ง๋ก, ์ ์ด์ ์ญ์ ์ด๋ผ๋ ๋ป์ด๋ค. ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ๊ฐ๋ฐ์๊ฐ ์ ์ดํ์ง ์๊ณ , ํ๋ก๊ทธ๋จ์ด๋ ํ๋ ์์ค์ด ์ง์ ์ ์ด๋ฅผ ํ๋ค๋ ๋ง์ด๋ค. ์ปดํฌ๋ํธ์ ์์กด ๊ด๊ณ ๊ฒฐ์ (Component dependency resolution), ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ(life cycle)์ ๊ฐ์ ์ผ์ ๋์ ์ํํด์ค๋ค.
ํํ ์คํ๋ง ํ๋ ์์ค์ ์ด์ฉํด์ ๊ฐ๋ฐํ ๋ ์ฌ๋ฌ๊ฐ์ง Bean์ ์ฌ์ฉ ํ ๊ฒ์ด๋ค. ์ฌ์ฉ์์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด, ์์ฒญ์ ์๋ง์ Bean์ ์์ฑํด์ ํ์ํ ์ผ์ ํ๋๋ก ์ํจ๋ค. ํด๋น Bean์ด ํ ์ผ์ ๋ง์น๋ฉด Bean์ ์ญ์ ํด์ค๋ค. ํ์ง๋ง ์ด๋ฐ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ฉธ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง ์ ํ์๊ฐ ์๋ค. ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ์ ์ด ํ ํ์๊ฐ ์์ด ํ๋ ์์ค์ด ์ง์ ์ ์ดํด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๊ฒ์ด IoC ์ ์ด์ ์ญ์ ์ด๋ค.
์ปจํ ์ด๋๋?
์ปจํ ์ด๋ ํน์ IoC์ปจํ ์ด๋๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ปจํ ์ด๋๋ ์ฝ๋์ ์ฒ๋ฆฌ ๊ณผ์ ์ ์์ ๋ฐ์ ๋ ๋ฆฝ์ ์ธ ์กด์ฌ์ด๋ค.
์ ์ ํ ์ค์ ์ ํด์ฃผ๋ฉด, ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ์ค์ค๋ก ์ฐธ์กฐํ ๋ค ์์์ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ฉธ(๊ฐ์ฒด์ ์์ ์ฃผ๊ธฐ)์ ๊ด๋ฆฌํ๋ค.
DI(Dependency Injection)๋?
DI๋ Dependency Injection์ ์ค์ ๋ง๋ก, ์์กด์ฑ ์ฃผ์ ์ด๋ผ๋ ๋ป์ด๋ค. ๊ฐ ํด๋์ค์ ์์กด ๊ด๊ณ๋ฅผ Bean ์ค์ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์ปจํ ์ด๋๊ฐ ์๋์ผ๋ก ์ฃผ์ ํด์ค๋ค.
DI๋ IoC ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๊ตฌํํ๋ ๋ฐฉ์ ์ค ํ๋ ์ด๋ค.
IoC๊ฐ ๋ฒ์ฉ์ ์ธ ์๋ฏธ์ด๊ธฐ ๋๋ฌธ์ ์คํ๋ง์ด ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ํน์ง์ ๋ช ํํ๊ฒ ์ค๋ช ํ์ง ๋ชปํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์คํ๋ง์ด ์ ๊ณตํ๋ IoC๋ฐฉ์์ ํต์ฌ์ ํํํ๊ธฐ ์ํด ์์กด์ฑ ์ฃผ์ (Dependency Injection)์ด๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ๋ค. (DI๊ฐ ์คํ๋ง์์ ์์๋ ๊ฐ๋ ์ ์๋๋ค)
DI์ ํต์ฌ์ ์ธ๋ถ์์ ์ฃผ์ ๋๋ ๋ค์ด๋๋ฏนํ(๋์ ์ธ) ์์กด ๊ด๊ณ ์ด๋ค. ์คํ๋ง DI์ 3๊ฐ์ง ์กฐ๊ฑด์ ์๋์ ๊ฐ๋ค.
- ํด๋์ค ๋ชจ๋ธ์ด๋ ์ฝ๋์๋ ์์กด ๊ด๊ณ๊ฐ ๋๋ฌ๋์ง ์๋๋ค.
- ๋ฐํ์ ์์ ์ ์์กด ๊ด๊ณ๋ ์ปจํ ์ด๋๋ ํฉํ ๋ฆฌ ๊ฐ์ ์กด์ฌ๊ฐ ๊ฒฐ์ ํ๋ค.
- ์์กด ๊ด๊ณ๋ ์ฌ์ฉ ํ ์ค๋ธ์ ํธ์ ๋ํ ๋ ํผ๋ฐ์ค๋ฅผ ์ธ๋ถ์์ ์ ๊ณต(์ฃผ์ ) ํด ์ค์ผ๋ก์จ ๋ง๋ค์ด์ง๋ค.
ํด๋์ค ๊ฐ์ ์์กด ๊ด๊ณ๋ ๋ฐํ์ ํ๊ฒฝ์์ ๋์ ์ผ๋ก ๊ฒฐ์ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ์ฐํ ์ฝ๋๋ก ์ธํด ๊ฐ๋ฐ์ ์ด๋ ค์์ด ์ ๋ค.
'Server > Java & Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring boot] properties ์ฌ์ฉ์ "Could not resolve placeholder" ์ค๋ฅ ๋ฐ์ (2) | 2023.05.28 |
---|---|
Spring์์ Redis๋ก ์บ์ฑ์ฒ๋ฆฌ (0) | 2023.05.16 |
[Spring] save() vs saveAndFlush() (0) | 2023.03.22 |
[Spring] ์์กด์ฑ ์ฃผ์ (Dependency Injection)์์ final ํค์๋๋ฅผ ์ฌ์ฉํ๋ ์ด์ (0) | 2023.03.22 |
[Java] Java์ ๋ฑ์ฅ (0) | 2023.02.14 |