ν°μ€ν 리 λ·°
Spring Framework
κ°λ²Όμ΄ νλ μμν¬ Spring
[μΆμ²] [νμ©νλ‘κ·Έλ¨]Spring Framework|μμ±μ
μ€νλ§ νλ μμν¬λ?
Spring Frameworkλ μν°νλΌμ΄μ¦κΈ μ ν리μΌμ΄μ μ λ§λ€κΈ° μν λͺ¨λ κΈ°λ₯μ μ’ ν©μ μΌλ‘ μ 곡νλ κ²½λνλ μ루μ μ λλ€. JEE(Java Enterprise Edition)κ° μ 곡νλ λ€μμ κΈ°λ₯μ μ§μνκ³ μκΈ° λλ¬Έμ, JEEλ₯Ό λ체νλ νλ μμν¬λ‘ μ리μ‘κ³ μκ³ μ€μ λ‘ Spring νλ μμν¬λ JEEκ° μ 곡νλ λ€μν κΈ°λ₯μ μ 곡νλ κ² λΏλ§ μλλΌ, DI(Dependency Injection)λ AOP (Aspect Oriented Programming)μ κ°μ κΈ°λ₯λ μ§μ ν©λλ€.
1. κ²½λ컨ν μ΄λ
- μ€νλ§μ μλ°κ°μ²΄λ₯Ό λ΄κ³ μλ 컨ν μ΄λμ΄λ€. μ€νλ§ μ»¨ν μ΄λλ μ΄λ€ μλ° κ°μ²΄μ μμ±κ³Ό μλ©Έκ³Ό κ°μ λΌμ΄νμ¬μ΄ν΄μ κ΄λ¦¬νκ³ , μΈμ λ μ§ μ€νλ§ μ»¨ν μ΄λλ‘ λΆν° νμν κ°μ²΄λ₯Ό κ°μ Έμ μ¬μ©ν μ μλ€.
2. DI(Dependency Injection β μμ‘΄μ± μ§μ) ν¨ν΄ μ§μ
- μ€νλ§μ μ€μ νμΌμ΄λ, μ΄λ Έν μ΄μ μ ν΅ν΄μ κ°μ²΄κ°μ μμ‘΄ κ΄κ³λ₯Ό μ€μ ν μ μλ€. λ°λΌμ, κ°μ²΄λ μμ‘΄νκ³ μλ κ°μ²΄λ₯Ό μ§μ μμ±νκ±°λ κ²μν νμκ° μλ€.
3. AOP(Aspect Oriented Programming β μΈ‘λ©΄ μ§ν₯ νλ‘κ·Έλλ°) μ§μ
- AOP λ λ¬Έμ λ₯Ό λ°λΌλ³΄λ κ΄μ μ κΈ°μ€μΌλ‘ νλ‘κ·Έλλ°νλ κΈ°λ²μ΄λ€. μ΄λ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν ν΅μ¬κ΄μ¬ μ¬νκ³Ό μ 체μ μ μ©λλ 곡ν΅κ΄μ¬ μ¬νμ κΈ°μ€μΌλ‘ νλ‘κ·Έλλ° ν¨μΌλ‘μ 곡ν΅λͺ¨λμ μ¬λ¬ μ½λμ μ½κ² μ μ©ν μ μλλ‘ νλ€. μ€νλ§μ μ체μ μΌλ‘ νλ‘μ κΈ°λ°μ AOPλ₯Ό μ§μνλ―λ‘ νΈλμμ μ΄λ, λ‘κΉ , 보μκ³Ό κ°μ΄ μ¬λ¬ λͺ¨λμμ 곡ν΅μΌλ‘ νμλ‘ νμ§λ§ μ€μ λͺ¨ν€μ ν΅μ¬μ μλ κΈ°λ₯λ€μ λΆλ¦¬νμ¬ κ° λͺ¨λμ μ μ©μ΄ κ°λ₯νλ€.
4. POJO(Plain Old Java Object β νΉμ μΈν°νμ΄μ€ λλ ν΄λμ€λ₯Ό μμνμ§ μλ μΌλ° μλ° κ°μ²΄) μ§μ
- POJOλ μΌλ°μ μΈ μλ° κ°μ²΄λ₯Ό λ§νλ€. μ€νλ§ μ»¨ν μ΄λμ μ μ₯λλ μλ°κ°μ²΄λ νΉμ ν μΈν°νμ΄μ€λ₯Ό ꡬν νκ±°λ, ν΄λμ€ μμ μμ΄λ μ¬μ©μ΄ κ°λ₯νλ€. μΌλ°μ μΈ μλ° κ°μ²΄λ₯Ό μΉνκΈ° μν λ³μΉ κ°λ μ΄λ€.
5. IoC(Inversion of Control β μ μ΄μ λ°μ )
- IoCλ μ€νλ§ νλ μμν¬κ° κ°κ³ μλ ν΅μ¬μ μΈ κΈ°λ₯μ΄λ€. λ³Έλ μλ°μ κ°μ²΄ μμ± λ° μμ‘΄κ΄κ³μ μμ΄ λͺ¨λ μ μ΄κΆμ κ°λ°μμκ² μμλ€. νμ§λ§, μλΈλ¦Ώκ³Ό EJBκ° λνλλ©΄μ κΈ°μ‘΄μ μ μ΄κΆμ΄ μλΈλ¦Ώ 컨ν μ΄λ λ° EJB컨ν μ΄λμκ² λμ΄κ°κΈ° λλ€. νμ§λ§ λͺ¨λ κ°μ²΄μ μ μ΄κΆμ΄ λμ΄κ° κ²μ μλκ³ μλΈλ¦Ώ, EJBμ λν μ μ΄κΆμ μ μΈν λλ¨Έμ§ κ°μ²΄ μ μ΄κΆμ κ°λ°μλ€μ΄ λ΄λΉνκ³ μλ€. μ€νλ§ νλ μμν¬μμλ κ°μ²΄μ λν μμ±κ³Ό μλͺ μ£ΌκΈ°λ₯Ό κ΄λ¦¬ν μ μλ κΈ°λ₯μ μ 곡νκ³ μλλ° μ΄λ° μ΄μ λ‘ μ€νλ§ μ»¨ν μ΄λ[Spring Container] λλ IoC 컨ν μ΄λ λΌκ³ λΆλ₯΄κΈ°λ νλ€.
6. μ€νλ§μ νΈλμ μ μ²λ¦¬λ₯Ό μν μΌκ΄λ λ°©λ²μ μ 곡νλ€
- JDBCλ₯Ό μ¬μ©νλ JTAλ₯Ό μ¬μ©νλ , λλ 컨ν μ΄λκ° μ 곡νλ νΈλμ μ μ μ¬μ©νλ , μ€μ νμΌμ ν΅ν΄ νΈλμ μ κ΄λ ¨μ 보λ₯Ό μ λ ₯νκΈ°λλ¬Έμ νΈλμ μ ꡬνμ μκ΄ μμ΄ λμΌν μ½λλ₯Ό μ¬λ¬ νκ²½μμ μ¬μ©μ΄ κ°λ₯νλ€.
7. μ€νλ§μ μμμ±κ³Ό κ΄λ ¨λ λ€μν APIλ₯Ό μ§μνλ€.
- μ€νλ§μ JDBCλ₯Ό λΉλ‘―νμ¬ iBatis, νμ΄λ²λ€μ΄νΈ, JPAλ± DBμ²λ¦¬λ₯Ό μν΄ λ리 μ¬μ©λλ λΌμ΄λΈλ¬λ¦¬μ μ°λμ μ§μνκ³ μλ€.
8. μ€νλ§μ λ€μν APIμ λν μ°λμ μ§μνλ€.
- μ€νλ§μ JMS, λ©μΌ, μ€μΌμ₯΄λ§λ± μν°νλΌμ΄μ¦ μ΄ν리μΌμ΄μ κ°λ°μ νμν λ€μν APIλ₯Ό μ€μ νμΌκ³Ό μ΄λ Έν μ΄μ μ ν΅ν΄μ μμ½κ² μ¬μ©ν μ μλλ‘ μ§μνκ³ μλ€.
μ€νλ§μ μ°λ μ΄μ
μλ°λ‘ κ°λ°μνλ©΄ μ€μΌμΌμ΄ μμ²λκ² ν°κ² μ¬μ€μ λλ€. μμΌλ‘λ μ€μΌμΌμ΄ μ μ 컀μ§κ² λ κΊΌκ³ κ·Έλ κ² λλ©΄ νλ‘μ νΈ κ·λͺ¨λ 컀μ§κ² λ©λλ€ λ°λΌμ λ§μ κ°λ°μλ€μ΄ ν νλ‘μ νΈμ ν¬μ νκ² λκ³ λ§μ κ°λ°μλ€μ΄ μλ‘ λΆν νμ¬ κ°λ°μ νλ€λ³΄λ©΄ μ€λ³΅λλ λΆλΆλ λ§κ³ λ 볡μ‘ν΄μ§λλ€ μ€νλ§μ μ΄λ° κ°λ°μλ€μ νΈνκ² μμ μν μμλ νκ²½μ λ§λ€μ΄μ£Όλ μ€νμμ€ νλ μ μν¬μ λλ€.
*μ€νμμ€ : νΉλ³ν λΌμ΄μΌμ€μμ΄ μ¬μ©μ΄ κ°λ₯ν κ°λ°μμ€
*νλ μ μν¬ : μ’λ κ°λ°μ΄ μ©μ΄νλλ‘ κ³΅ν΅ ν΄λ μ€λ₯Ό λ§λ€μ΄ λ¬Άμ΄λμ κ²
[μΆμ²] [νμ©νλ‘κ·Έλ¨]Spring Framework|μμ±μ
[μΆμ²] [νμ©νλ‘κ·Έλ¨]Spring Framework|μμ±μ