DIλ Spring Frameworkμμ μ§μνλ IoCμ ννμ
λλ€.
ν΄λμ€ μ¬μ΄μ μμ‘΄κ΄κ³λ₯Ό Bean μ€μ μ 보λ₯Ό λ°νμΌλ‘ 컨ν
μ΄λκ° μλμ μΌλ‘ μ°κ²°ν΄μ£Όλ κ²μ μλ―Έν©λλ€.
κ°λ°μλ μ μ΄λ₯Ό μ§μ λ΄λΉν νμ μμ΄, Bean μ€μ νμΌμ μμ‘΄ κ΄κ³κ° νμνλ€λ μ 보λ₯Ό μΆκ°νλ ννλ‘ κ΅¬ννκ² λ©λλ€.
Containerκ° μ€ν νλ¦μ μ£Όμ²΄κ° λμ΄ μ ν리μΌμ΄μ
μ½λμ μμ‘΄ κ΄κ³λ₯Ό μ£Όμ
ν΄μ£Όκ² λ©λλ€.
β
μμ‘΄μ± Dependency λ?
νμ¬ κ°μ²΄κ° λ€λ₯Έ κ°μ²΄μ μνΈμμ©, μ¦ μ°Έμ‘°νκ³ μλ€λ©΄ λ€λ₯Έ κ°μ²΄λ€μ νμ¬ κ°μ²΄μ μμ‘΄μ΄λΌκ³ ν©λλ€.
βοΈ μμ‘΄μ±μ΄ μνν μ΄μ
νλμ λͺ¨λμ΄ λ°λλ©΄ μμ‘΄ν λ€λ₯Έ λͺ¨λκΉμ§ λ³κ²½λμ΄μΌ ν©λλ€.
Unit Test λͺ©μ μμ²΄κ° λ€λ₯Έ λͺ¨λλ‘λΆν° λ
립μ μΌλ‘ ν
μ€νΈνλ κ²μ μꡬνκΈ° λλ¬Έμ,
ν
μ€νΈ κ°λ₯ν μ΄νμ λ§λ€ λ μμ‘΄μ±μ΄ μμΌλ©΄ Unit Test μμ±μ΄ μ΄λ ΅μ΅λλ€.
new
ν€μλλ₯Ό μ¬μ©ν΄ λ€λ₯Έ λͺ¨λμ μ΄κΈ°ννμ§ μκΈ° μν΄μλ, κ°μ²΄ μμ±μ λ€λ₯Έ κ³³μμ νκ³ μ΄λ―Έ μμ±λ κ°μ²΄λ₯Ό μ°Έμ‘°νλ μμΌλ‘ ꡬννκ² λ©λλ€.
DIλ IoC κ°λ
μ λ°νμΌλ‘ νμ¬, ν΄λμ€κ° μΈλΆλ‘λΆν° μμ‘΄μ±μ κ°μ ΈμΌ ν©λλ€.
π‘ DIκ° νμν μ΄μ
ν΄λμ€ μ¬μ¬μ© κ°λ₯μ±μ λμ΄κ³ , λ€λ₯Έ ν΄λμ€μ λ
립μ μΌλ‘ ν΄λμ€λ₯Ό ν
μ€νΈν μ μλλ‘ ν©λλ€.
λΉμ¦λμ€ λ‘μ§μ νΉμ ꡬνμ΄ μλ ν΄λμ€λ₯Ό μμ±νλ λ° λ§€μ° ν¨κ³Όμ μ
λλ€.
νμν μμ‘΄μ±μ λͺ¨λ ν¬ν¨νλ ν΄λμ€μ μμ±μλ₯Ό λ§λ€κ³ κ·Έ μμ±μλ₯Ό ν΅ν΄ μμ‘΄μ±μ μ£Όμ
ν©λλ€.
μ¦ μμ±μμ νλΌλ―Έν°λ₯Ό λ§λ€μ΄λκ³ μ΄λ₯Ό ν΅ν΄ DI 컨ν
μ΄λκ° μμ‘΄ν κ°μ²΄μ μ°Έμ‘°λ₯Ό λ겨주λ λ°©μμ
λλ€.
β
μμ±μ μ£Όμ
μ μ₯μ
π‘ μν μ°Έμ‘° λ°©μ§ κ°λ₯
μμ±μ μ£Όμ
μ μμ±μλ‘ κ°μ²΄λ₯Ό μμ±νλ μμ μ μμ±μμ μΈμμ μ¬μ©λλ λΉμ μ°Ύκ±°λ μμ±νμ¬ λΉμ μμ±μλ₯Ό νΈμΆν©λλ€.
κ·Έ μΈμ μμ‘΄μ± μ£Όμ
λ°©μμ λΉμ λ¨Όμ μμ±ν ν μ΄λ
Έν
μ΄μ
μ΄ λΆμ νλμ ν΄λΉνλ λΉμ μ°Ύμμ μ£Όμ
νκ±°λ Setterμ κ°μ²΄λ₯Ό νΈμΆν΄ μ£Όμ
νκ² λ©λλ€.
μμ κ°μ λ°©μμ κ°μ²΄κ° μ€μ λ‘ μ¬μ©λκΈ° μ κΉμ§λ μλ¬κ° λ°μνμ§ μκ² λμ΄ λ¬Έμ λ₯Ό μ°ΎκΈ° μ΄λ ΅μ΅λλ€.
π‘ final ν€μλ
λΆλ³νλ κ°μ²΄λ₯Ό μμ±ν μ μμ΅λλ€.
λ°νμμ μ€μ κ°μ²΄κ° λ³νλ κ²μ λ§μ λΆλ³μ±μ μ μ§ν μ μμ΄ μ€λ₯λ₯Ό μ¬μ μ λ°©μ§ν μ μμ΅λλ€.
μμ‘΄μ±μ μ
λ ₯ λ°λ setter methodλ₯Ό λ§λ€κ³ μ΄λ₯Ό ν΅ν΄ μμ‘΄μ±μ μ£Όμ
ν©λλ€.
setter λ©μλλ μΈλΆμμ μ€λΈμ νΈ λ΄λΆμ attribute κ°μ λ³κ²½νλ €λ μ©λλ‘ μ¬μ©λ©λλ€.
ν΅μ¬ κΈ°λ₯μ νλΌλ―Έν°λ‘ μ λ¬λ κ°μ λ΄λΆμ μΈμ€ν΄μ€ λ³μμ μ μ₯νλ κ²μ
λλ€.
μ€νλ§μμ μ§μ§νλ DI λ°©μμΌλ‘, μΈλΆμμ μ 곡λ°μ μ€λΈμ νΈ λ νΌλ°μ€λ₯Ό μ μ₯ν΄λλ€κ°, λ΄λΆμ λ©μλμμ μ¬μ©νκ² νλ DI λ°©μμ νμ©νκΈ° μ ν©ν©λλ€.
μμ‘΄μ±μ μ£Όμ
νλ ν¨μλ₯Ό ν¬ν¨ν μΈν°νμ΄μ€λ₯Ό μμ±νκ³ μ΄ μΈν°νμ΄μ€λ₯Ό ꡬννλλ‘ ν¨μΌλ‘μ¨ μ€νμμ μμ‘΄μ±μ μ£Όμ
ν©λλ€.
Injectionμ νκΈ° μν μΈν°νμ΄μ€ μ μ ν ꡬν μ DIκ° μ΄λ£¨μ΄μ§λλ‘ νλλ°, μ΄λ μ€νλ§μ΄ μ§μνμ§ μλ λ°©μμ
λλ€.