π Spring Framework
π§ νμ λ°°κ²½
2000λ
λ μ΄λ° μλ° μν°νλΌμ΄μ¦ μ ν리μΌμ΄μ
κ°λ°μ EJB(Enterprise JavaBeans) μ€μ¬
λΉμ EJBλ λκ·λͺ¨ μμ€ν
μ λ§λ€κΈ°μλ κΈ°λ₯μ΄ λ§κ³ κ°λ ₯νμ§λ§, μ€μ νμ
μμλ μ¬λ¬ μ¬κ°ν λ¬Έμ λ€μ΄ μμμ
-> Springμ βEJB μμ΄λ μν°νλΌμ΄μ¦ μ ν리μΌμ΄μ
μ λ§λ€ μ μλ€βλ μ² νμμ μΆλ°

- IoC / DI (μ μ΄μ μμ , μμ‘΄μ± μ£Όμ
)
- κ°μ²΄κ° μ§μ μμ‘΄ λμμ μμ±νμ§ μκ³ , μΈλΆ(Spring 컨ν
μ΄λ) μμ μ£Όμ
λ°λλ‘ μ€κ³
- κ²°κ³Ό: κ²°ν©λ κ°μ, ꡬν체 κ΅μ²΄ μ©μ΄, ν
μ€νΈ μ¬μμ§ (Mock κ°μ²΄ μ¬μ© κ°λ₯)
- POJO κΈ°λ° κ°λ°
- νΉμ νλ μμν¬λ₯Ό μμνκ±°λ μΈν°νμ΄μ€λ₯Ό ꡬννμ§ μμλ λ¨
- μμ μλ° κ°μ²΄(POJO)λ‘ λΉμ¦λμ€ λ‘μ§ μμ± κ°λ₯
- νλ μμν¬μ λ μ’
μμ μΈ μ½λ μμ± κ°λ₯
- AOP (κ΄μ μ§ν₯ νλ‘κ·Έλλ°)
- νΈλμμ
, λ‘κΉ
, 보μ κ°μ ν‘λ¨ κ΄μ¬μ¬λ₯Ό λΆλ¦¬
- λΉμ¦λμ€ λ‘μ§μ ν΅μ¬ κΈ°λ₯μλ§ μ§μ€ κ°λ₯
- κ²½λ 컨ν
μ΄λ
- EJB 컨ν
μ΄λμ λΉν΄ ν¨μ¬ κ°λ³κ³ μ€μ μ΄ λ¨μ
- νμν κΈ°λ₯λ§ μ νμ μΌλ‘ μ¬μ© κ°λ₯
π Framework vs λΌμ΄λΈλ¬λ¦¬
π§ νλ μμν¬μ λΌμ΄λΈλ¬λ¦¬ μ°¨μ΄
νλ μμν¬μ λΌμ΄λΈλ¬λ¦¬λ λͺ¨λ κ°λ°μ λλ λꡬμ΄μ§λ§, μ μ΄ νλ¦μ 주체μ μ¬μ© λ°©μμμ λ³Έμ§μ μΈ μ°¨μ΄κ° μμ
1οΈβ£ μ μ΄ νλ¦μ 주체
λΌμ΄λΈλ¬λ¦¬
- μ μ΄ νλ¦μ 주체λ κ°λ°μ
- κ°λ°μκ° νμν μμ μ λΌμ΄λΈλ¬λ¦¬μ κΈ°λ₯μ μ§μ νΈμΆ
- νλ‘κ·Έλ¨μ μ 체 νλ¦μ κ°λ°μκ° μ€κ³νκ³ κ΄λ¦¬
νλ μμν¬
- μ μ΄ νλ¦μ 주체λ νλ μμν¬
- κ°λ°μλ νλ μμν¬κ° μ ν κ·μΉμ λ°λΌ μ½λλ₯Ό μμ±
- νλ μμν¬κ° νμν λ κ°λ°μμ μ½λλ₯Ό νΈμΆ
β μ΄λ₯Ό μ μ΄μ μμ (Inversion of Control, IoC) μ΄λΌκ³ ν¨
2οΈβ£ μ¬μ© λ°©μμ μ°¨μ΄
λΌμ΄λΈλ¬λ¦¬μ μ¬μ© λ°©μ
- νμν κΈ°λ₯λ§ μ νμ μΌλ‘ μ¬μ©
- μ½λμ μμ λκ° λκ³ μ μ½μ΄ μ μ
- μ 체 ꡬ쑰λ₯Ό κ°μ νμ§ μμ
νλ μμν¬μ μ¬μ© λ°©μ
- μ ν΄μ§ ꡬ쑰μ μλͺ
μ£ΌκΈ°(lifecycle)λ₯Ό λ°λ¦
- μ ν리μΌμ΄μ
μ λΌλλ₯Ό μ 곡
- κ°λ°μλ βμ΄λμ 무μμ ꡬνν μ§βλ₯Ό νλ μμν¬ κ·μΉμ λ§μΆ° μμ±
π μμλ₯Ό ν΅ν μ€λͺ
μΌλ° Java λΌμ΄λΈλ¬λ¦¬ μμ
μλ₯Ό λ€μ΄, java.util.List λ Collections κ°μ Java λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ κ²½μ°:
κ°λ°μκ° μ§μ κ°μ²΄λ₯Ό μμ±νκ³ νμν λ©μλλ₯Ό μνλ μμ μ νΈμΆ
List<String> list = new ArrayList<>();
Collections.sort(list);
β νλ¦μ κ°λ°μκ° μ μ΄νλ©°, λΌμ΄λΈλ¬λ¦¬λ λ¨μν κΈ°λ₯μ μ 곡ν λΏμ΄λ€.
Spring Framework μμ
Spring Frameworkλ λνμ μΈ νλ μμν¬
κ°μ²΄ μμ±κ³Ό μμ‘΄μ± κ΄λ¦¬λ₯Ό κ°λ°μκ° μλ Spring 컨ν
μ΄λκ° λ΄λΉ
κ°λ°μλ @Component, @Service, @Controller λ±μ μ΄λ
Έν
μ΄μ
μ μ¬μ©ν΄ μν λ§ μ μ
@Service
public class UserService {
}
μ€μ κ°μ²΄ μμ± μμ κ³Ό νΈμΆ νλ¦μ Springμ΄ κ΄λ¦¬
β κ°λ°μκ° μ½λλ₯Ό νΈμΆνλ κ²μ΄ μλλΌ, Springμ΄ κ°λ°μμ μ½λλ₯Ό νΈμΆν¨