πβοΈ μ€λμ μ€νλ§ Spring μ λν΄ μμλ³΄κ² λ€ !
Spring μ λν΄ μμ보기 μ μ κΈ°λ³Έμ μΈ μ΄λ‘ μ μμ보μ!
π» νλ μμν¬(framework) λ?
μννΈμ¨μ΄ κ°λ°μμ νΉμ κΈ°λ₯μ μννλ λ° νμν
κΈ°λ³Έ ꡬ쑰μ νμ€νλ λ°©λ²μ μ 곡νλ μννΈμ¨μ΄ νλ«νΌμ΄λ€.
μλ₯Όλ€μ΄,
μμμ μ μμν λ, μ²μλΆν° νΌμ μ€λΉνκΈ°μ λ€μν λ©΄μμ λ무λλ λΆλ΄μ΄ λκΈ° λ§λ ¨μΈλ°
μ λ°μ μΈ κ΅¬μ‘°μ νμ μ 곡ν΄μ£Όλ νλμ°¨μ΄μ¦ κ°λ§Ήμ μΌλ‘ μμνκ² λλ€λ©΄ λ§€μ° νΈμνκ² μμμ μ μμν΄λ³Ό μ μλ€.
μ¦, νλ μμν¬λ λͺ©μ μ λ°λΌ ν¨μ¨μ μΌλ‘ ꡬ쑰λ₯Ό μ§λμ κ°λ° λ°©μμ΄λ€.
π» λͺ¨λ (Module)
λΌμ΄λΈλ¬λ¦¬λ₯Ό λ§νλ€.
νλ μμν¬ μμ 미리 λ§λ€μ΄μ Έμλ κΈ°λ₯
π» νλ μμν¬μ μ’ λ₯
- μ€νΈλΏμΈ νλ μμν¬ (STRUTS Framework)
- μ€νλ§ νλ μμν¬ (Spring Framework)
- μ΅κ·€λ¬ JS( AngularJS)
- μ₯κ³ νλ μμν¬ (Django Framework)
- μΉ νλ μμν¬: μΉ μ ν리μΌμ΄μ κ°λ°μ μν νλ μμν¬. μ: Spring (Java), Django (Python), Ruby on Rails (Ruby).
- λͺ¨λ°μΌ νλ μμν¬: λͺ¨λ°μΌ μ ν리μΌμ΄μ κ°λ°μ μν νλ μμν¬. μ: React Native, Flutter.
- λ°μ€ν¬ν± μ ν리μΌμ΄μ νλ μμν¬: λ°μ€ν¬ν± μ ν리μΌμ΄μ κ°λ°μ μν νλ μμν¬. μ: Electron, Qt.
- κ²μ μμ§: κ²μ κ°λ°μ μν νλ μμν¬. μ: Unity, Unreal Engine.
π» νλ μμν¬ vs λΌμ΄λΈλ¬λ¦¬
- νλ μμν¬: μ ν리μΌμ΄μ μ ꡬ쑰λ₯Ό μ μνκ³ , κ°λ°μκ° κ·Έ ꡬ쑰μ λ§μΆ° μ½λλ₯Ό μμ±νλλ‘ ν©λλ€. μ¦, νλ μμν¬κ° κ°λ°μμ μ½λλ₯Ό νΈμΆν©λλ€ (μ μ΄μ μμ , Inversion of Control).
- λΌμ΄λΈλ¬λ¦¬: νΉμ κΈ°λ₯μ μννκΈ° μν΄ κ°λ°μκ° νΈμΆνλ μ½λμ λλ€. κ°λ°μκ° νμν λ λΌμ΄λΈλ¬λ¦¬λ₯Ό νΈμΆνμ¬ μ¬μ©ν©λλ€.
π» μ€νλ§ νλ μμν¬ λ?
μ€νλ§ νλ μμν¬λ, μλ° νλ«νΌμ μν μ ν리μΌμ΄μ νλ μμν¬μ΄λ€.
κ²½λν νλ μμν¬λ‘ νλ‘μ νΈ κ·λͺ¨κ° ν΄μλ‘ μ€νλ§ νλ μμν¬λ₯Ό μ¬μ©νλ€. ( μν°νλΌμ΄μ¦κΈ μ ν리μΌμ΄μ κ°λ°)
λ€μν λΌμ΄λΈλ¬λ¦¬ μ°λμ μ§μνκ³ , μ μμ λΆ νμ€νλ μμν¬μ κΈ°λ°μ΄ λλ κΈ°μ μ΄κΈ° λλ¬Έμ νμ©λκ° λμμ§κ³ μλ€.
π» μ€νλ§ νΉμ§
- POJO(Plain Old Java Object) κΈ°λ°μ νλ μμν¬ μλ° μ€λΈμ νΈ κΈ°λ° νλ μμν¬ λΌλ μλ―Έμ λλ€. μλ° κ°μ²΄μ λΌμ΄νμ¬μ΄ν΄μ μ€νλ§ μ»¨ν μ΄λκ° μ§μ κ΄λ¦¬νλ©°, μ€νλ§ μ»¨ν μ΄λλ‘λΆν° νμν κ°μ²΄λ₯Ό μ»μ΄ μ¬ μ μμ΅λλ€.
- DI(Dependency Injection)μ μ§μ κ° κ³μΈ΅μ΄λ μλΉμ€ λ€ μ¬μ΄ λλ κ°μ²΄λ€ μ¬μ΄μ μμ‘΄μ±μ΄ μ‘΄μ¬ν κ²½μ° μ€νλ§ νλ μμν¬κ° μλ‘λ₯Ό μ°κ²°μ μΌμ€λλ€. μ΄λ ν΄λμ€λ€ μ¬μ΄μ μ½ν κ²°ν©μ κ°λ₯μΌ ν©λλ€.
- AOP(Aspect Oriented Programming)λ₯Ό μ§μ νΈλμμ , λ‘κΉ , 보μ λ± μ¬λ¬ λͺ¨λμμ 곡ν΅μ μΌλ‘ μ§μνλ κΈ°λ₯μ λΆλ¦¬νμ¬ μ¬μ©ν μ μμ΅λλ€.
- νμ₯μ±μ΄ λλ€. μ€νλ§ νλ μμν¬μ μμ€λ λͺ¨λ λΌμ΄λΈλ¬λ¦¬λ‘ λΆλ¦¬μμΌ λμμΌλ‘μ¨ νμν λΌμ΄λΈλ¬λ¦¬λ§ κ°μ Έλ€ μΈ μ μ μ΅λλ€. κ·Έλ¦¬κ³ λ§μ μΈλΆ λΌμ΄λΈλ¬λ¦¬λ€λ μ΄λ―Έ μ€νλ§ νλ μμν¬μ μ°λλκ³ μμ΅λλ€.
- Model2 λ°©μμ MVC Frameworkλ₯Ό μ§μ
- κ²½λ컨ν μ΄λλ‘ λΌμ΄νμ¬μ΄ν΄μ κ΄λ¦¬νκ³ νμν κ°μ²΄λ₯Ό μ€νλ§μΌλ‘λΆν° λ°μμ΅λλ€.
- DIμ§μνμ¬ κ°μ²΄κ°μ μμ‘΄κ΄κ³ μ€μ μ΄ κ°λ₯ν©λλ€.
- AOPμ§μν©λλ€.
- POJOλ°©μμΌλ‘ μλ°κ°μ²΄λ νΉμ ν μΈν°νμ΄μ€λ₯Ό ꡬννκ³ ν΄λΌμ€ μμμ΄ νμμΉ μμ΅λλ€.
- νΈλμ μ μ²λ¦¬λ₯Ό μν μΌκ΄λ λ°©λ²μ μ 곡ν©λλ€.
- μμμ± κ΄λ ¨ λ€μν APIλ₯Ό μ§μν©λλ€.
- APIμ°λμ μ§μν©λλ€.
π» μ€νλ§ ν΅μ¬ κ°λ
1. IOC (Inversion of Control) / DI (Dependency Injection) : κ°μ²΄ μμ± λ° μμ‘΄μ± κ΄λ¦¬λ₯Ό νλ μμν¬μ 맑κΉ
μμ‘΄μ± μ£Όμ (DI) : μμ±μ μ£Όμ , μΈν° μ£Όμ
2. AOP (Aspect-Oriented Programming) : ν΅μ¬ λ‘μ§κ³Ό λΆκ°μ μΈ κ΄μ¬μ¬λ₯Ό λΆλ¦¬νλ νλ‘κ·Έλλ° ν¨λ¬λ€μ
3. Spring MVC : μΉ μ ν리μΌμ΄μ κ°λ°μ μν μΉ νλ μμν¬
DispatcherServlet, Controller, View , Model
4. Spring Boot : Spring νλ μμν¬λ₯Ό λ μ½κ² μ¬μ©νκΈ° μν νλ‘μ νΈ
μλ μ€μ (Auto-configuration) , λ΄μ₯ μλ², μ€νν° ν¨ν€μ§
5. Spring Data : λ°μ΄ν° μ‘μΈμ€ κ³μΈ΅μ κ°νΈνκ² λ§λ€κΈ° μν νλ‘μ νΈ
Spring Data JPA, Spring Data MongoDB
6. Spring Security
7. Spring Cloud
8. Spring Batch
9. Spring Integration
μΆμ² >