IoC
νλ‘κ·Έλ¨μ μ μ΄μ νλ¦ κ΅¬μ‘°κ° λ°λλ κ² μ΄λ€.
μΌλ°μ μΈ κ°μ²΄μ νλ¦μ λ€μκ³Ό κ°λ€.
- κ°μ²΄ μμ±
- μμ‘΄μ± κ°μ²΄ μμ± (ν΄λμ€ λ΄λΆ)
- μμ‘΄μ± κ°μ²΄ λ©μλ νΈμΆ
νμ§λ§ μ€νλ§ λ΄λΆμμλ λ€μκ³Ό κ°μ μμλ‘ μμ± λ° μ€νλλ€.
- κ°μ²΄ μμ±
- μμ‘΄μ± κ°μ²΄ μ£Όμ (μ€νλ§μκ² μμνμ¬ λ§λ€μ΄λμ κ°μ²΄)
- μμ‘΄μ± κ°μ²΄ λ©μλ νΈμΆ
μ€νλ§μ΄ λͺ¨λ μμ‘΄μ± κ°μ²΄λ₯Ό μ€νλ§μ΄ μ€νλ λ λ€ λ§λ€μ΄ μ£Όκ³ νμν κ³³μ μ£Όμ
μμΌμ€μΌλ‘μ¨
Bean λ€μ μ±κΈν΄ ν¨ν΄μ νΉμ§ μ κ°μ§λ€.
μ μ΄μ νλ¦μ μ¬μ©μκ° μ»¨νΈλ‘€ νλκ²μ΄ μλ μ€νλ§μκ² λ§κ²¨ μμ μ μ²λ¦¬(μ€νλ§μ΄ μ²λ¦¬) νκ² λλ€. (μΌλ°μ μΈ Java μμ€λ€μ μ€μ€λ‘ μ μ΄ λ° μλΉν¨)
μ¬μ©μλ μμ μ΄ λ§λ κ°μ²΄κ° μ΄λμ μ¬μ©λλμ§ μ μ μκ³ μ μ΄ κΆνμ μμλ°λ νΉλ³ν κ°μ²΄μ μν΄μ λ§λ€μ΄μ§κ³ μ¬μ©λλ€. (μμ λ€μ΄ λ§λ Java μμ€κ° νλ μμν¬μ μν΄ μλΉλ¨)
μ΄λ λ€μ λκ°μ§μ ꡬν λ°©λ²μΌλ‘λ λ€μκ³Ό κ°λ€.
DL (Dependency Lookup : μμ‘΄μ± κ²μ)
μ μ₯μμ μ μ₯λμ΄ μλ λΉ (Bean) μ μ κ·ΌνκΈ° μν΄ κ°λ°μλ€μ΄ 컨ν μ΄λμμ μ 곡νλ API λ₯Ό μ΄μ©νμ¬ μ¬μ©νκ³ μ λΉμ Lookup νλ κ²
DI (Dependency Injection : μμ‘΄μ± μ£Όμ )
κ° κ³μΈ΅ μ¬μ΄μ κ° ν΄λμ€ μ¬μ΄μ νμλ‘ νλ μμ‘΄ κ΄κ³λ₯Ό 컨ν μ΄λκ° μλμΌλ‘ μ°κ²°ν΄ μ£Όλκ²
DL μ μ¬μ©μ 컨ν μ΄λμ μ’ μμ±μ΄ μ¦κ°νμ¬, μ΄λ₯Ό μ€μ΄κΈ° μν΄μ DI λ₯Ό μ¬μ©
public class Parent {
private Child child;
public void setChild(Child child) {
this.child = child;
}
}
μ€νλ§μμλ κ°μ²΄μ μμ±κ³Ό μλ©Έμ κ΄λ ¨λ μμ μ μλμΌλ‘ μνν΄ μ£Όλλ° κ°μ²΄κ° μμ±λλκ³³μ Bean Container λΌκ³ νλ€.
μ€νλ§μμλ κ°μ²΄λ₯Ό Bean μ΄λΌκ³ λΆλ₯΄λ©°, νλ‘μ νΈκ° μ€νλ λ μ¬μ©μκ° Bean μΌλ‘ κ΄λ¦¬νλ κ°μ²΄λ€μ μλμΌλ‘ μμ±ν΄ μ€λ€.
μ€νλ§μμ μ€νν λ μμ±νλ Bean μ μ£Όμ μμΌμ£Όλ κ³Όμ μ DI λΌκ³ νλ€.