[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κ°μ§ 쑰건μ μλμ κ°λ€.
- ν΄λμ€ λͺ¨λΈμ΄λ μ½λμλ μμ‘΄ κ΄κ³κ° λλ¬λμ§ μλλ€.
- λ°νμ μμ μ μμ‘΄ κ΄κ³λ 컨ν μ΄λλ ν©ν 리 κ°μ μ‘΄μ¬κ° κ²°μ νλ€.
- μμ‘΄ κ΄κ³λ μ¬μ© ν μ€λΈμ νΈμ λν λ νΌλ°μ€λ₯Ό μΈλΆμμ μ 곡(μ£Όμ ) ν΄ μ€μΌλ‘μ¨ λ§λ€μ΄μ§λ€.
ν΄λμ€ κ°μ μμ‘΄ κ΄κ³λ λ°νμ νκ²½μμ λμ μΌλ‘ κ²°μ λλ€. κ·Έλ κΈ° λλ¬Έμ μ μ°ν μ½λλ‘ μΈν΄ κ°λ°μ μ΄λ €μμ΄ μ λ€.