Spring FrameWork
π λͺ©μ°¨
- Spring μ΄λ?
- FrameWork?
- Spring νΉμ§
πΆ Spring μ΄λ?
μ€νλ§ νλ μμν¬(Spring framework)λ μλ° νλ«νΌμ μν μ€ν μμ€ μ ν리μΌμ΄μ νλ μμν¬λ‘μ κ°λ¨ν μ€νλ§(Spring)μ΄λΌκ³ λ νλ€. [μλ°κΈ°λ°μ μΉ μ΄ν리μΌμ΄μ μ λ§λ€ μ μλ νλ μμν¬]
λμ μΈ μΉ μ¬μ΄νΈλ₯Ό κ°λ°νκΈ° μν μ¬λ¬ κ°μ§ μλΉμ€λ₯Ό μ 곡νκ³ μλ€. λνλ―Όκ΅ κ³΅κ³΅κΈ°κ°μ μΉ μλΉμ€ κ°λ° μ μ¬μ©μ κΆμ₯νκ³ μλ μ μμ λΆ νλ μμν¬μ κΈ°λ° κΈ°μ λ‘μ μ°μ΄κ³ μμ΅λλ€.
πΆ FrameWork (νλ μμν¬)
νλ μμν¬λ μ΄λ ν λͺ©μ μ λ¬μ±νκΈ° μν΄ λ³΅μ‘νκ² μ½νμλ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν ꡬ쑰μ΄λ©°, μννΈμ¨μ΄ κ°λ°μ μμ΄ νλμ λΌλ, 골격 μ½λ μν μ ν©λλ€.
μ΄λ₯Ό μλμ°¨λ‘ λΉμ νλ€λ©΄, νλ μμν¬λ μ΄λ―Έ μ μλ μλμ°¨μ νλ μμΌλ‘ λΉμ ν μ μμ΅λλ€.
β¨μ¬μ© μ΄μ )
κ°λ°μμ μ€νμΌμ λ°λΌ κ²°κ³Όλ¬Όμ΄ λ¬λΌμ§λλ€. μ¬λ¬ λͺ μ κ°λ°μλ€μ 곡λ μμ μ μ§νν κ²½μ° λ¬Έμ κ° λ°μν©λλ€. μ¬λ¬ λͺ λ€μ κ°λ° μ€νμΌμ΄ λ€λ₯΄κ±°λ, κ°λ° μλ μ°¨μ΄κ° ν΄ κ²½μ° μ΄ν΄νκΈ° νλ κ²½μ°κ° λ°μν©λλ€. μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²° νκΈ° μν΄ κ°λ° νμ€ κ°μ΄λλ₯Ό μ μνκ³ νμ€μ λ§μΆμ΄ κ°λ° λ©λλ€.
β¨ μ₯μ
체κ³μ μΈ μ½λ κ΄λ¦¬λ‘ μ μ§ λ³΄μκ° μ©μ΄νλ€.
κΈ°λ³Έ μ€κ³ λ° κΈ°λ₯ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ 곡νμ¬ κ°λ° μμ°μ±μ΄ λλ€.
κ²μ¦λ μν€ν μ²μ μ¬ μ¬μ©κ³Ό μΌκ΄μ± μ μ§
β¨ λ¨μ
λ§μ κΈ°λ₯μ μ 곡λλ κΈ°λ₯ λ§νΌ νλ‘μ νΈ μ©λμ΄ μ¦κ°νκ² λλ€.
λ§μ κΈ°λ₯λ€μ νμ©νκΈ° μν΄ νμ΅νλ λ§μ λ Έλ ₯κ³Ό μκ°μ΄ νμνλ€.
μμ λ‘μ΄ κ°λ°μ νκ³κ° μλ€.
πΆ νΉμ§
κ²½λ 컨ν μ΄λλ‘μ μλ° κ°μ²΄λ₯Ό μ§μ κ΄λ¦¬ν©λλ€. κ°κ°μ κ°μ²΄ μμ±, μλ©Έκ³Ό κ°μ λΌμ΄ν μ¬μ΄ν΄μ κ΄λ¦¬νλ©° μ€νλ§μΌλ‘λΆν° νμν κ°μ²΄λ₯Ό μ»μ΄μ¬ μ μμ΅λλ€.
μλ°μ λΌμ΄λΈλ¬λ¦¬λ€μ κ΄λ¦¬ν΄μ£Όκ³ , WASκ° λ΄μ₯λμ΄ μμ΄ μλ° μΉ μ ν리μΌμ΄μ μ ꡬλ ν μ μμ΅λλ€.
π POJO
μ€νλ§μ Plain Old Java Object λ°©μμ νλ μμν¬μ΄λ€. μΌλ°μ μΈ J2EE νλ μμν¬μ λΉν΄ ꡬνμ μν΄ νΉμ ν Interfaceλ₯Ό ꡬννκ±°λ μμμ λ°μ νμκ° μμ΄ κΈ°μ‘΄μ μ‘΄μ¬νλ λΌμ΄λΈλ¬λ¦¬ λ±μ μ§μνκΈ°μ μ©μ΄νκ³ κ°μ²΄κ° κ°λ³λ€.
*Plain Old Java Object, κ°λ¨ν POJOλ λ§ κ·Έλλ‘ μ€λλ λ°©μμ κ°λ¨ν μλ° μ€λΈμ νΈλΌλ λ§μ΄λ€.
Java EE λ±μ μ€λ νλ μμν¬λ€μ μ¬μ©νκ² λλ©΄μ ν΄λΉ νλ μμν¬μ μ’ μλ “λ¬΄κ±°μ΄” κ°μ²΄λ₯Ό λ§λ€κ² λ κ²μ λ°λ°ν΄μ μ¬μ©νκ² λ μ©μ΄μ΄λ€.
π IoC : Inversion of Control
μ€νλ§μ μ μ΄ λ°μ (IoC : Inversion of Control)λ₯Ό μ§μνλ€. 컨νΈλ‘€μ μ μ΄κΆμ΄ μ¬μ©μκ° μλλΌ νλ μμν¬μ μμ΄μ νμμ λ°λΌ μ€νλ§μμ μ¬μ©μμ μ½λλ₯Ό νΈμΆν©λλ€.
μ μ΄ λ°μ , μ μ΄μ λ°μ , μ μ μ΄λ νλ‘κ·Έλλ¨Έκ° μμ±ν νλ‘κ·Έλ¨μ΄ μ¬ μ¬μ© λΌμ΄λΈλ¬λ¦¬μ νλ¦ μ μ΄λ₯Ό λ°κ² λλ μννΈμ¨μ΄ λμμΈ ν¨ν΄μ λ§νλ€. μ€μ¬μ IoC(Inversion of Control)μ΄λΌκ³ λΆλ¦ λλ€.
μ ν΅μ μΈ νλ‘κ·Έλλ°μμ νλ¦μ νλ‘κ·Έλλ¨Έκ° μμ±ν νλ‘κ·Έλ¨μ΄ μΈλΆ λΌμ΄λΈλ¬λ¦¬μ μ½λλ₯Ό νΈμΆν΄ μ΄μ©ν©λλ€. νμ§λ§ μ μ΄ λ°μ μ΄ μ μ©λ ꡬ쑰μμλ μΈλΆ λΌμ΄λΈλ¬λ¦¬μ μ½λκ° νλ‘κ·Έλλ¨Έκ° μμ±ν μ½λλ₯Ό νΈμΆν©λλ€. μ€κ³ λͺ©μ μ μ μ΄ λ°μ μ λͺ©μ μ μλμ κ°μ΅λλ€.
- μμ μ ꡬννλ λ°©μκ³Ό μμ μν μ체λ₯Ό λΆλ¦¬
- λͺ¨λμ μ μν λ, λͺ¨λκ³Ό μΈλΆ νλ‘κ·Έλ¨μ κ²°ν©μ λν΄ κ³ λ―Όν νμ μμ΄ λͺ¨λμ λͺ©μ μ μ§μ€ν μ μμ
- λ€λ₯Έ μμ€ν μ΄ μ΄λ»κ² λμ ν μ§μ λν΄ κ³ λ―Όν νμ μμ΄, 미리 μ ν΄μ§ νμ½λλ‘λ§ λμ
- λͺ¨λμ λ°κΎΈμ΄λ λ€λ₯Έ μμ€ν μ λΆμμ©μ΄ μμ
π μμ‘΄μ± μ£Όμ
μ€νλ§μ μμ‘΄μ± μ£Όμ (DI : Dependency Injection)μ μ§μν©λλ€. κ°κ°μ κ³μΈ΅μ΄λ μλΉμ€λ€ κ°μ μμ‘΄μ±μ΄ μ‘΄μ¬ν κ²½μ° νλ μμν¬κ° μλ‘ μ°κ²° μμΌμ€λλ€.
*μμ‘΄μ± μ£Όμ (Dependency Injection)μ νλμ κ°μ²΄κ° λ€λ₯Έ κ°μ²΄μ μμ‘΄μ±μ μ 곡νλ ν ν¬λμ΄λ€.
“μμ‘΄μ±”μ μλΉμ€λ‘ μ¬μ©ν μ μλ κ°μ²΄λ‘ μκ°νμ.
ν΄λΌμ΄μΈνΈκ° μ΄λ€ μλΉμ€λ₯Ό μ¬μ©ν κ²μΈμ§ μ§μ νλ λμ , ν΄λΌμ΄μΈνΈμκ² λ¬΄μ¨ μλΉμ€λ₯Ό μ¬μ©ν κ² μΈμ§λ₯Ό λ§ν΄μ£Όλ κ²μ΄λ€. “μ£Όμ ”μ μμ‘΄μ±(μλΉμ€)λ₯Ό μ¬μ©νλ €λ κ°μ²΄(ν΄λΌμ΄μΈνΈ)λ‘ μ λ¬λλ κ²μ μλ―Έν©λλ€.
μλΉμ€λ ν΄λΌμ΄μΈνΈ μνμ μΌλΆμ΄λ€. ν΄λΌμ΄μΈνΈκ° μλΉμ€λ₯Ό ꡬμΆνκ±°λ μ°Ύλ κ²μ νμ©νλ λμ ν΄λΌμ΄μΈνΈμκ² μλΉμ€λ₯Ό μ λ¬νλ κ²μ΄ ν¨ν΄μ κΈ°λ³Έ μ건μ λλ€.
μμ‘΄μ± μ£Όμ μ μλλ κ°μ²΄μ μμ±κ³Ό μ¬μ©μ κ΄μ¬μ λΆλ¦¬νλ κ²μ λλ€. μ΄λ κ°λ μ±κ³Ό μ½λ μ¬μ¬μ©μ λνμ€λλ€.
μμ‘΄μ± μ£Όμ μ κ΄λ²μν μμ μ΄ ν ν¬λμ ν ννμ΄λ€. μ΄λ€ μλΉμ€λ₯Ό νΈμΆνλ €λ ν΄λΌμ΄μΈνΈλ κ·Έ μλΉμ€κ° μ΄λ»κ² ꡬμ±λμλμ§ μμ§ λͺ»ν΄μΌ νλ€. ν΄λΌμ΄μΈνΈλ λμ μλΉμ€ μ 곡μ λν μ± μμ μΈλΆ μ½λ(μ£Όμ μ)λ‘ μμνλ€. ν΄λΌμ΄μΈνΈλ μ£Όμ μ μ½λλ₯Ό νΈμΆν μ μλ€. κ·Έ λ€μ, μ£Όμ μλ μ΄λ―Έ μ‘΄μ¬νκ±°λ μ£Όμ μμ μν΄ κ΅¬μ±λμμ μλΉμ€λ₯Ό ν΄λΌμ΄μΈνΈλ‘ μ£Όμ (μ λ¬)νλ€. κ·Έλ¦¬κ³ λμ ν΄λΌμ΄μΈνΈλ μλΉμ€λ₯Ό μ¬μ©νλ€. μ΄λ ν΄λΌμ΄μΈνΈκ° μ£Όμ μμ μλΉμ€ κ΅¬μ± λ°©μ λλ μ¬μ©μ€μΈ μ€μ μλΉμ€μ λν΄ μ νμκ° μμμ μλ―Ένλ€. ν΄λΌμ΄μΈνΈλ μλΉμ€μ μ¬μ© λ°©μμ μ μνκ³ μλ μλΉμ€μ κ³ μ ν μΈν°νμ΄μ€μ λν΄μλ§ μλ©΄ λλ€. μ΄κ²μ "ꡬμ±"μ μ± μμΌλ‘λΆν° "μ¬μ©"μ μ± μμ ꡬλΆνλ€.
π AOP( Aspect-Oriented Programming)
μ€νλ§μ κ΄μ μ§ν₯ νλ‘κ·Έλλ°(AOP)μ μ§μν©λλ€. λ°λΌμ νΈλμμ μ΄λ λ‘κΉ , 보μκ³Ό κ°μ΄ μ¬λ¬ λͺ¨λμμ 곡ν΅μ μΌλ‘ μ¬μ©νλ κΈ°λ₯μ κ²½μ° ν΄λΉ κΈ°λ₯μ λΆλ¦¬νμ¬ κ΄λ¦¬ν μ μμ΅λλ€.
π νμ₯μ±μ΄ λλ€.
μ€νλ§μ νμ₯μ±μ΄ λμ΅λλ€. μ€νλ§ νλ μμν¬μ ν΅ν©νκΈ° μν΄ κ°λ¨νκ² κΈ°μ‘΄ λΌμ΄λΈλ¬λ¦¬λ₯Ό κ°μΈλ μ λλ‘ μ€νλ§μμ μ¬μ©μ΄ κ°λ₯νκΈ° λλ¬Έμ μ λ§μ λΌμ΄λΈλ¬λ¦¬κ° μ΄λ―Έ μ€νλ§μμ μ§μλκ³ μλ μ€νλ§μμ μ§μλκ³ μκ³ μ€νλ§μμ μ§μλκ³ μκ³ μ€νλ§μμ μ¬μ©λλ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ³λλ‘ λΆλ¦¬νκΈ°λ μ©μ΄ν©λλ€.
π μ€λ³΅ μ½λ μ κ±°
JDBC κ°μ ν νλ¦Ώμ μ¬μ©ν λ μ€λ³΅λλ μ½λλ λ§κ³ 볡μ‘ν©λλ€. μ΄λ₯Ό λͺ¨λ μ κ±°ν©λλ€.
reference