[Spring] ์ ์๋ฐ ๊ฐ์ฒด๋ฅผ IoC ์ปจํ ์ด๋์ ๋น์ผ๋ก ๋ง๋ค๊น?
IoC๋ spring์ ํตํด์๋ง ์ ์ฉํ ์ ์๋๊ฒ ์๋๋ฉฐ ์ผ๋ฐ ์๋ฐ ๊ฐ์ฒด๋ก DI๋ฅผ ์ง์ ๊ตฌํํ ์๋ ์๋ค.
๊ทธ๋ฐ๋ฐ๋ spring์ IoC ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
DI(Dependency Injection, ์์กด์ฑ ์ฃผ์ )
DI๋ฅผ ์ง์ ๊ตฌํํ๋ ๊ฒ ๋ณด๋ค spring์์ ์ ๊ณตํ๋ IoC ์ปจํ ์ด๋์ DI๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด ํธ๋ฆฌํ๊ณ ํจ์จ์ ์ด๋ค.
๊ฐ์ฒด์ Scope
์๋ฐ ๊ฐ์ฒด๋ฅผ IoC ์ปจํ ์ด๋์ ๋น์ผ๋ก ๋ง๋ค๋ฉด ๊ฐ์ฒด์ scope๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ฉ์ดํ๋ค.
IoC ์ปจํ ์ด๋์์ ๊ด๋ฆฌ๋๋ ๋น๋ค์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธํค scope๋ก ๋ฑ๋ก๋๋ค.
๋ฐ๋ผ์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ์ผ๋ก ์ค๋ก์ง ํ๋์ ์ธ์คํด์ค๋ง ์ฌ์ฉํด๋ ๋๋ ๊ฐ์ฒด๋ผ๋ฉด IoC ์ปจํ ์ด๋์ ๋น์ผ๋ก ๋ฑ๋กํด์ ์์ฃผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
๐ ์ฑ๊ธํค์ ๋ฐ๋ ๊ฐ๋ = ํ๋กํ ํ์ = ๋งค๋ฒ ๋ค๋ฅธ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๊ฒ
์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ ํ๋์ ์ธ์คํด์ค๋ง ํ์ํ ๊ฐ์ฒด๋ ์ฑ๊ธํค scope์ด ๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด์ ํจ์จ์ ์ด๋ฉฐ ์ฑ๋ฅ ์ต์ ํ์ ์ ๋ฆฌํ๋ค.
๋ผ์ดํ ์ฌ์ดํด ์ธํฐํ์ด์ค ์ง์
ํนํ ๋ผ์ดํ ์ฌ์ดํด ์ธํฐํ์ด์ค๋ spring IoC ์ปจํ ์ด๋์ ๋ฑ๋ก๋ ๋น๋ค์๋ง ๊ตญํ๋์ด ์ผ๋ฐ ์๋ฐ ๊ฐ์ฒด๋ ์ฌ์ฉํ ์ ์๋ค.
๋ผ์ดํ ์ฌ์ดํด ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํด ์ด๋ค ๋น์ด ๋ง๋ค์ด์ง๋ ๋น์ ์ถ๊ฐ์ ์ธ ์์ ์ ํ ์ ์๋ค.
์๋ฅผ ๋ค์ด ํด๋์ค๋ค์ด ๋ชจ๋ ๊ตฌํ๋์ง ์์ ์ํ์์๋ ์์กด ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ํด๋์ค์ ๋จ์ ํ ์คํธ๋ฅผ ๋ง๋ค๊ธฐ๊ฐ ์ด๋ ค์ด๋ฐ ๋ผ์ดํ ์ฌ์ดํด ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๊ทธ๋ฐ ์ํฉ์์๋ ํ ์คํธ๋ฅผ ์ํํ ์ ์๋ค.
References
์ธํ๋ฐ - ๋ฐฑ๊ธฐ์ ๋์ ์คํ๋ง ํ๋ ์์ํฌ ํต์ฌ ๊ธฐ์
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring] @Autowired์ ๋ค์ํ ์ฌ์ฉ ๋ฐฉ๋ฒ - required, Primary, Qualifier (0) | 2020.03.01 |
---|---|
[Spring] ๋น์ ์ค์ ํ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ - XML, JAVA, Component Scan (0) | 2020.03.01 |
[Spring] ์คํ๋ง PSA (0) | 2020.03.01 |
[Spring] ์คํ๋ง AOP ๊ฐ๋ ์ดํด ๋ฐ ์ ์ฉ ๋ฐฉ๋ฒ (4) | 2020.02.29 |
[Spring] ์์กด์ฑ ์ฃผ์ (DI, Dependency Injection)์ ์ธ๊ฐ์ง ๋ฐฉ๋ฒ (0) | 2020.02.28 |
๋๊ธ