Today I Learn โ๐ผ
- ์ค๋ ํ๋ฃจ ๊ฐ์ฅ ์ธ์ ๊น์๋ ๋ฐฐ์์๋ ๋ญ๊ฐ ์์์ง?
๊ฐ์๋ฅผ ๋ค์ผ๋ฉด์ bean ๋ฑ๋ก ์ด์ผ๊ธฐ๊ฐ ๋์๋ค. ๋ฉด์ ์คํฐ๋์์๋ ์ ํํ๊ฒ DI์ ๋ํด ์ค๋ช ํ์ง ๋ชปํ๋ค. ๋ฌดํ๋ฃจํ ๋จํก๋ฐฉ์์ IoC์ ๋ฑ๋ก๋ ๋น์ ๋ํ ์ง๋ฌธ์ด ์์๋ค. ๊ทธ๋ฌ๋ ๋๋ ์์ง ๋ชปํ๊ธฐ์ ์ด๋ฒ์ ์ ๋ฆฌ๋ฅผ ํ๋ค.
- ๊ทธ ๋ฐฐ์๊น์ง ๋ค๊ฐ๊ฐ๋๋ฐ ์ด๋ค ์ด๋ ค์์ด ์์์ง?
์ง๊ธ๊น์ง ์คํ๋ง ๊ฐ์๋ ์์ฒญ๋๊ฒ ๋ง์ด ๋ค์๋ค. DI, IoC๋ ์ฌ๋ฌ๋ฒ ๊ณต๋ถํ๋ค. ๊ทธ๋ฌ๋ ์ค๋์ด ์ ํ๋ธ 5๋ถ ์์ฝ์ผ๋ก ์ธํด ์ ๋ง ์ฝ๊ฒ ์ดํดํ๊ฒ ๋์๋ค.
- ๊ทธ ์ด๋ ค์์ ํด๊ฒฐํ๊ธฐ ์ํ ๋์ ์๋๋ค์ ๋ฌด์์ด ์์์ง?
๊ฐ๋ฐ ๊ณต๋ถํ ๋๋ง๋ค DI, IoC ๊ณต๋ถ๋ฅผ ํ๋ค.
- ๊ทธ ๊ณผ์ ์์ ๋๋ ๋ฌด์์ ๊นจ๋ฌ์๊ณ , ์ด๋ค ๊ฐ์ /์๊ฐ์ด ๋ค์์์ง?
๊ฐ๋ฐ์ ๊ธฐ๋ณธ์ ์์์ผ ํ๋ค. ๊ธฐ๋ณธ์ ์๋ฉด ๋ชจ๋ ๊ฒ ์ด๋ป๊ฒ ๋์๊ฐ๋์ง ์ธ์์ด ๋ณด์ด๊ฒ ๋๋ค.
- ์ด ์ํ์์ ์ดํ ๋ ๋์ ๋ด๊ฐ ๋๋ ค๋ฉด ๋ฌด์์ ๋ณด์ํ์ง?
๊ธฐ์ CS ๋ฉด์ ์คํฐ๋๋ ๊พธ์คํ ํด์ผ๊ฒ ๋ค. ์ง๋ฌธ์ ๋ฐ์์ ๋ '๋ต๋ณ์ ํ์ง ๋ชปํ๋ค == ๋ชจ๋ฅธ๋ค'
์์กด์ฑ ์ฃผ์ ์ด๋?
Dependency Injection
ioc์ปจํ ์ด๋ == ๋งค๊ฐ์ฒด
๋ชจ๋ ๋ชจ๋์ ๋ฑ๋กํ๋ค.
์ฌ์ฉ์ฒ์์ ์ง์ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ
ํ์ํ ๋ ioc ์ปจํ ์ด๋๊ฐ
์์กด์ฑ์ด ์๋ ๋ชจ๋์ ์ฃผ์ ํด์ฃผ๋ ๋ฐฉ์
๊ฐ๋ฐ์๊ฐ ์ปจํธ๋กคํ์ง ์๊ณ ioc ์ปจํ ์ด๋๋ฅผ ๋ด๋นํ๋ ํ๋ ์์ํฌ๊ฐ ์ปจํธ๋กค์ ํ๋
์ ์ด์ ์ญ์ ํ์์ด ๋ฐ์ํ๋ค.
'์์กดํ๋ค' ๋ป ๋ฌด์์ธ๊ฐ?
ํด๋์คA๋ B์ ์์กดํ๋ค.
ํด๋์คA ์ฝ๋์๋ B๋ฅผ ์์กดํ๋ ์ฝ๋๊ฐ ์๋ค.
ํด๋์คA ๋ ์ง์ ํด๋์คB๋ฅผ ์์ฑํด์ ์ฐ๋ ๊ฒ์ด ์๋๋ผ, ์ธ๋ถ์์ ํด๋์คB๋ฅผ ์์ฑํด์ ์ฃผ์ ํด์ค๋ค.
์ ์ด์ ์ญ์
Inversion of Control
๊ธฐ์กด์๋ ์์กด์ฑ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ปจํธ๋กค ํ๋ค.
ioc๊ฐ ๋ฐ์ํ๋ฉด ์์กด์ฑ์ด ์ญ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ == ๊ฐ๋ฐ์๊ฐ ์ง์ ์์กด์ฑ์ ์ ์ดํ์ง ์๋๋ค.
ํด๋์คA๊ฐ ํด๋์คB๋ฅผ ์ง์ ์์ฑ, ์ฐธ์กฐํจ
์ค๊ฐ์ ๋งค๊ฐ์ฒด๋ฅผ ๋๊ณ
๊ฐ๋ฐ์๊ฐ ์ง์ ์์กด์ฑ์ ์ ์ดํ๋ ๊ฒ์
๋งค๊ฐ์ฒด์๊ฒ ์ ์ด๊ถ์ ๋นผ์๊ฒจ์ ๋ ์ด์ ๊ฐ๋ฐ์๊ฐ ์ ์ด์ ์ฃผ์ฒด๊ฐ ์๋๋ค.
์ด ๋งค๊ฐ์ฒด๊ฐ ioc ์ปจํ ์ด๋์ด๋ค.
IOC ์ปจํ ์ด๋?
์์กด์ฑ ๊ด๋ฆฌ
์ธ์คํด์ค๋ฅผ ์์ฑ ํ ์ฃผ์
๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์
ํ๋ ์์ํฌ๊ฐ ๋ด๋นํ๋ค.
DI๋ ์ด๋ป๊ฒ ํ๋๊ฐ?
์ด๋ ๊ฒ new๋ก ์์ฑํ์ง ์๊ณ
์์ฑ์, ์ด๋ ธํ ์ด์ ์ฒ๋ผ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ค.
DI ์ฅ์
1. ์์กด์ฑ์ด ์ค์ด๋ ๋ค
์ฌ์ฉํ๋ ํด๋์ค์์ ์ง์ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ, ioc ์ปจํ ์ด๋๋ฅผ ํตํด์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
2. ๋ณํ์ ๊ฐํ๋ค
์์กดํ๊ณ ์๋ ๋ชจ๋์ ๋ผ์ดํ ์ฌ์ดํด์ ์ ํ ์ ๊ฒฝ์ฐ์ง ์๊ธฐ ๋๋ฌธ์ ์์กดํ๊ณ ์๋ ๋ชจ๋์ด ๋ณ๊ฒฝ๋์ด๋ ์ ๊ฒฝ์ธ ํ์ ์๋ค.
3. ๋ฐ๋ผ์ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํจ
4. ์ฝ๋ ์ค์ด๋ฆ
์์ฑ, ์ญ์ ์ฝ๋๋ฅผ ์์ฑ ์ํ๊ธฐ ๋๋ฌธ์ ์ค์ด๋ฆ
5. ํ ์คํธ ํธํจ
์ธ๋ถ์์ ์ฃผ์ ๋ฐ๊ธฐ ๋๋ฌธ์, ์์ ์ด ์ํ๋ ๊ฐ์ฒด ์ํ๋ฅผ ๋ง๋ค์ด์ ์ฃผ์ ํ๋ฉด ๋๋ค.
'Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก์ ํธ ์์ (0) | 2024.08.23 |
---|---|
API ์ค๊ณ ์์น (0) | 2024.08.20 |
Redis, Spring (0) | 2024.08.07 |
Spring Security? OAuth2 ? (0) | 2024.08.06 |
MSA, Spring Cloud (0) | 2024.08.06 |