π³Spring
μ€νλ§ νλ μμν¬λ?
μλ° μν°νλΌμ΄μ¦ κ°λ°μ μν μ€ν μμ€ μ ν리μΌμ΄μ νλ μμν¬μ λλ€.
κ°λ¨ν μ€νλ§μ΄λΌκ³ λΆλ¦¬λ©° λμ μΈ μΉ μ¬μ΄νΈλ₯Ό κ°λ°νκΈ° μν μλΉμ€λ₯Ό μ 곡νκ³ μμ΅λλ€.
β
-μν°νλΌμ΄μ¦: κ°λ³ μ¬μ©μκ° μλ κΈ°μ μ λμμΌλ‘ νλ κ°λ°, μλ§μ λ°μ΄ν°μ²λ¦¬μ νΈλμμ μ΄ λμμ μ¬λ¬ μ¬μ©μλ‘λΆν° νν΄μ§λ ν° κ·λͺ¨μ νκ²½μ λ§ν©λλ€
β
-μ€ν μμ€: λꡬλ μμ λ‘κ² μμ€μ½λλ₯Ό μμ νκ³ κ³΅μ νλ©° μ§ν μ€μΈ νλ‘μΈμ€μ κΈ°μ¬ν μ μλλ‘ ν©λλ€
β
-νλ μμν¬: κ°λ° μ€κ³μ κΈ°λ³Έμ΄ λλ λΌλλ ꡬ쑰μ λλ€
κ°λ°μλ κ° κ°κ°μΈμ λ₯λ ₯μ°¨μ΄κ° ν¬κ³ , λ°λΌμ κ°λ°μ ꡬμ±μ λ°λΌμ νλ‘μ νΈμ κ²°κ³Ό μ°¨μ΄κ° ν½λλ€.
=> μ΄λ¬ν μν©μ 극볡νκΈ° μν μ½λμ κ²°κ³Όλ¬Όμ΄ 'νλ μμν¬' μ λλ€.
νλ μμν¬ μ΄μ© νλ€λ μλ―Έ : νλ‘κ·Έλ¨μ κΈ°λ³Έ νλ¦μ΄λ ꡬ쑰λ₯Ό μ νκ³ , λͺ¨λ νμμ΄ μ΄ κ΅¬μ‘°μ μμ μ μ½λλ₯Ό μΆκ°νλ λ°©μμΌλ‘ κ°λ° νλ€.
β
νλ μμν¬λ₯Ό μ¬μ©νλ©΄ ν¬κ² λ€μ 3κ°μ§μ μ₯μ μ΄ μμ΅λλ€.
1. μ΄λμ λ μμ±ν μνμμ νμν λΆλΆμ 쑰립νλ ννμ κ°λ°μ΄ κ°λ₯νλ€.
2. μΌμ ν νμ§μ΄ 보μ₯λ κ²°κ³Όλ¬Όμ μ»μ μ μλ€.
3. κ°λ° μκ°μ λ¨μΆν μ μλ€.
β
νλ μμ μν¬ μ’ λ₯ :
SpringMVC(Javaμ μΉ νλ μμν¬),
Django(Pythonμ μΉ νλ μμν¬),
Flask(Pythonμ λ§μ΄ν¬λ‘ μΉ νλ μμν¬),
Ruby on rails(Rubyμ μΉ νλ μμν¬),
.NET Framework(C#),
Express.js, Next.js (Node.js μλ°μ€ν¬λ¦½νΈ μΉ νλ μμν¬) λ±λ±.
μ μμ λΆ ( μ€νλ§νλ μμν¬ )
μ€νλ§ νλ μμν¬μ νΉμ§
Β·κ²½λ 컨ν μ΄λ
μλ° κ°μ²΄λ₯Ό μ§μ κ΄λ¦¬ν©λλ€.
κ°κ°μ κ°μ²΄ μμ±, μλ©Έκ³Ό κ°μ μλͺ μ£ΌκΈ°λ₯Ό κ΄λ¦¬νλ©° μ€νλ§μΌλ‘λΆν° νμν κ°μ²΄λ₯Ό μ»μ΄μ΅λλ€
β
Β·μ μ΄μ μμ IOC(Inversion of control)
μΌλ°μ μΌλ‘ μ¬μ©μκ° μ½λμ νλ¦μ μ£Όλνλ©° κ°μ²΄λ₯Ό ꡬμ±νκ³ λͺ¨λ μμ μ μ μ΄νλ€λ©΄,
IOCλ μ¬μ©μκ° μλ νΉλ³ν κ°μ²΄κ° μ μ΄ κΆνμ μμλ°μ κ° κ°μ²΄μ νλ¦μ μ μ΄νλ κ²μ λλ€.
βμ½λ κ°μ μ€λ³΅μ μ€μ¬ λ¬΄κ±°μ΄ μλ² λ°°μΉμ λΆλ΄μ μ€μ΄λ©°, μ μ°ν μ½λ μμ±κ³Ό μ μ§ λ³΄μ λ±μ νΈνκ² ν μ μμ΅λλ€
β
IOCλ₯Ό ꡬμ±νλ μμμλ DIμ DLμ΄ μμ΅λλ€.
*DI(Dependency Injection) : μμ‘΄μ± μ£Όμ
κ° κ°μ²΄κ° μλ‘ μμ‘΄νλ κ΄κ³κ° λ μ μλλ‘ μμ‘΄μ±μ μ£Όμ ν©λλ€. κ°κ°μ κ³μΈ΅μ΄λ μλΉμ€λ€ κ°μ μμ‘΄μ±μ΄ μ‘΄μ¬ν κ²½μ° λΉ(Bean) μ€μ μ 보λ₯Ό λ°νμΌλ‘ 컨ν μ΄λκ° μλμΌλ‘ μ°κ²°ν΄ μ€λλ€
β
*DL(Dependency Lookup) : μμ‘΄μ± κ²μ
컨ν μ΄λμμ κ°μ²΄λ₯Ό κ΄λ¦¬νκΈ° μν΄ λ³λμ μ μ₯μμ λΉ(bean)μ μ μ₯νκ³ κ°λ°μλ€μ 컨ν μ΄λμμ μ 곡νλ APIλ₯Ό μ΄μ©νμ¬ μ¬μ©νκ³ μ νλ λΉ(bean)μ κ²μν©λλ€
β*Bean : μ€νλ§ μ»¨ν
μ΄λκ° κ΄λ¦¬νλ μλ° κ°μ²΄
Β· POJO(Plain Old Java Object)
λ¨μ μλ° μ€λΈμ νΈ(νλ²ν μλ° κ°μ²΄)μ λλ€. μμ‘΄μ±μ΄ μμΌλ©° κ°κ²°ν μ½λλ₯Ό μμ±ν μ μλλ‘ λμμ€λλ€.
νΉλ³ν ν΄λμ€λ μΈν°νμ΄μ€λ₯Ό ꡬννμ§ μμλ λκΈ° λλ¬Έμ μμ λ‘κ² μ½λλ₯Ό μμ±ν μ μλλ°μ,
μ€νλ§ νλ μμν¬μμ POJOλ₯Ό μ¬μ©νλ©΄ λ€λ₯Έ κΈ°μ κ³Όμ μμ‘΄μ±μ΄ μ€μ΄λ€μ΄ ν μ€νΈ λ° μ μ§ λ³΄μκ° νΈλ¦¬ν μ μ°μ±μ κ°μ§λλ€.
(μ°λ¦¬κ° λ§λ€μλ DTOλ POJO λ°©μμΌλ‘ μμ±λ¨)
"POJOλ κ°μ²΄μ§ν₯μ μΈ μ리μ μΆ©μ€νλ©΄μ, νκ²½κ³Ό κΈ°μ μ μ’ μλμ§ μκ³ νμμ λ°λΌ
μ¬νμ©λ μ μλ λ°©μμΌλ‘ μ€κ³λ μ€λΈμ νΈμ΄λ€"
Β· AOP(Aspect-Oriented Programming)
κ΄μ μ§ν₯ νλ‘κ·Έλλ°μ μλ―Έν©λλ€
λ‘νΉ, νΈλμμ , 보μ λ± λ€λ£¨κΈ° μ΄λ €μ΄ κΈ°λ₯μ νλ‘κ·Έλ¨μ ν΅μ¬ λ‘μ§κ³Ό λΆλ¦¬νμ¬ κ΄λ¦¬νλ λ°©λ²μ μ 곡ν©λλ€
λ°λΌμ ν΅μ¬ λ‘μ§μ λ³κ²½νμ§ μκ³ λΆκ°κΈ°λ₯μ μΆκ°ν μ μκΈ° λλ¬Έμ κ°λ° λ° μ μ§ λ³΄μκ° μ©μ΄ν΄μ§λ©° μ½λμ μ¬μ¬μ© μ±κ³Ό κ°λ μ±λ λμ΄κ³ μ 체μ μΈ κ΅¬μ‘°μ κ°μ μ΄ κ°λ₯ν΄μ§λλ€.
μ€νλ§ νλ μμν¬ μ¬μ©μ΄μ (μ₯μ )
βμ νν λμ΄ μκΈ° λλ¬Έμ μΌμ μμ€μ νμ§μ κΈ°λ ν μ μμ΅λλ€.
κ°λ° ν μ μ§λ³΄μ λ° κΈ°λ₯μ νμ₯μ±μμλ νμ§μ 보μ₯ν©λλ€.
'μ μνμ€ νλ μμν¬'κΈ° λλ¬Έμ ν΄λΉ νλ μμν¬μ μμκ° ν½λλ€.(κ΅λ΄μν©)
β
μ€νλ§ νλ μμν¬ λ¨μ
βμ²μ μ€μ μ΄ λ³΅μ‘νλ€.( μ€νλ§λΆνΈλ κ°λ¨ )
λΆλͺ λ§μ κΈ°λ₯μ μ 곡ν΄μ νΈλ¦¬νμ§λ§, μ΄ κΈ°λ₯λ€μ μ΅λνκΈ°μν΄ μλΉν λ Έλ ₯κ³Ό μκ°μ΄ νμν©λλ€.
β
μ°λ¦¬λ λ¨κ³λ³λ‘ Spring legacy λ₯Ό ν΅ν΄ κΈ°λ³Έμ μΈ μ€νλ§μ λν΄μ λ°°μ°κ³
Spring Bootλ₯Ό νμ©ν΄ κ°λ¨ν μΉ MVC κ°λ°μ ν΄λ³Ό μμ
μ€νλ§ κΈ°μ μ체μ 맀λͺ°λκΈ° 보λ€λ μ¬μ©λ²μ μ΄μ μ λ§μΆ°μ
μ€λλ μ€νλ§ κΈ°μ , λ§μ΄λν μ€νλ§ κΈ°μ μ λν λΆλΆμ λ€λ£¨μ§ μμ μμ
Last updated