Inversion of Control, μ¦ μ μ΄μ μμ μ΄λ λ€μ ν λ¬Έμ₯μΌλ‘ μ μν μ μλ€.
Inversion of Control (IoC) The approach of outsourcing the construction and management of objects
λ¬Έμ₯ κ·Έλλ‘ ν΄μνλ©΄, κ°μ²΄μ μμ±κ³Ό κ΄λ¦¬λ₯Ό μΈμ£Όνλ μ κ·Όλ²μ΄λΌλ κ²μ΄λ€. μ°μ conventional ν μ μ΄μ λ°©μμ μ΄ν΄λ³΄μ.
Conventional Scenario

μ€ν¬μΈ ν΄λ½μ νμμ΄ νΉμ μ½μΉλ₯Ό μ ννλ μνμ΄λΌκ³ κ°μ νμ. κΈ°μ‘΄μλ μμ κ°μ΄ Member λΌλ class κ° μ§μ FootballCoach λΌλ κ°μ²΄λ₯Ό μμ±νμ¬ μ΄ κ°μ²΄μ λν μ μΈ, μ΄κΈ°ν, κ΄λ¦¬ λ±μ λͺ¨λ class λ΄λΆμμ μ§μ μνν΄μΌ νλ€. κ·Έλ¬λ Football μ΄ μλ λ€λ₯Έ μ€ν¬μΈ μ μ½μΉλ μ νν μ μλ κ°λ₯μ±μ΄ λμ λμλ κ°μ²΄μ λν construction κ³Ό management κ° μ΄λ €μμ§ μ μλ€.
μ΄λ²μλ λ€λ₯Έ λ°©μμ μ΄ν΄λ³΄μ.
Ideal Scenario

ν΄λΉ λ°©μμ Member class κ° μ§μ object λ€μ κ΄λ¦¬νλ κ²μ΄ μλλΌ, Spring Container μκ² μνλ Coach object λ₯Ό λ¬λΌκ³ μμ²νλ λ°©μμ΄λ€.
μ΄λ κ² λλ©΄ κ°μ²΄λ€μ λν μ μ΄λ₯Ό κ°μ²΄λ₯Ό μμ±νλ class μ μ‘΄μ¬νλ κ²μ΄ μλλΌ, κ°μ²΄λ€μ μμ±νκ³ κ΄λ¦¬νλ Spring Container μκ² μκΈ° λλ¬Έμ μ μ΄μ κΆνμ΄ λμ΄κ°λ€, μ¦ μ μ΄μ μμ (Inversion of Control)μ΄ μΌμ΄λ¬λ€κ³ νλ κ²μ΄λ€.
Spring Container
Spring Container λ κ°μ²΄λ€μ μμ±νκ³ κ΄λ¦¬νλ©°, νΉμ κ°μ²΄λ₯Ό μνλ μμ²μ΄ μμ λ ν΄λΉ κ°μ²΄μ reference λ₯Ό μ 곡νλ μμ κΈ°λ₯μ μννλ€. μ¬κΈ°μ Spring Container λ λ€μ μΈ κ°μ μ£Όμν κΈ°λ₯μ κ°μ§λ€.
Primary functions of Spring Container
- κ°μ²΄λ€μ λ§λ€κ³ κ΄λ¦¬νλ€. (Inversion of Control)
- κ°μ²΄ μμ‘΄μ±μ μ£Όμ νλ€. (Depedency Injection)
- Spring Bean μ μλͺ μ£ΌκΈ°λ₯Ό κ΄λ¦¬νλ€. (μ΄κΈ°ν ~ μλ©Έ)
κ·Έλ λ€λ©΄ Spring Container μ μ‘΄μ¬νλ κ°μ²΄λ€μ μ΄λ»κ² configure νλ κ²μΌκΉ? λ€μ 3κ°μ§μ λ°©λ²μ΄ μ‘΄μ¬νλ€.
Figuring Spring Container
- XML configuration file (legacy)
- Java Annotations (modern)
- Java Source Code (modern)
μ΄μ Inversion of Control μ μν΄μ λμ΄κ° κ°μ²΄μ μ μ΄μ λνμ¬, Spring Container λ μ΄λ€ λ°©μμΌλ‘ κ°μ²΄λ₯Ό μμ²ν class μκ² κ°μ²΄μ λν μ κ·Όμ μ 곡νλμ§ μμ보μ.