Skip to content

TIL - 2025-03-14[Spring MVC, Manual-Spring, Spring IoC/DI, AOP]Β #13

@Sewoni

Description

@Sewoni

πŸ‹TIL - 2025-03-14- Friday

πŸ“š 였늘의 ν•™μŠ΅

🚨 문제 상황

Spring MVC 전체 흐름을 배우고 Controller/Service κ΅¬μ‘°λŠ” μ΅μˆ™ν•΄μ‘Œμ§€λ§Œ, 뒀따라 λ‚˜μ˜€λŠ” κ°œλ…μΈ IoC, DI, AOP, DispatcherServlet의 λ‚΄λΆ€ λ™μž‘,
그리고 이듀이 μ–΄λ–€ ꡬ쑰 μ†μ—μ„œ μ—°κ²°λ˜κ³  μ™œ ν•„μš”ν•œμ§€ 감이 잘 μ•ˆ μž‘ν˜”λ‹€.

λ˜ν•œ Spring Boot 없이 μˆ˜λ™μœΌλ‘œ κ΅¬μ„±λœ μ½”λ“œ ꡬ쑰가 Spring Boot와 무엇이 λ‹€λ₯Έμ§€ κ°œλ…μ μœΌλ‘œ μ •λ¦¬ν•˜λŠ” 것도 μ–΄λ €μ› λ‹€.

🎯 μ‹œλ„ν•œ κ³Όμ •

  • AppConfig, WebApplicationInitializer, DispatcherServlet이 μ–΄λ–€ 역할을 ν•˜λŠ”μ§€ μ½”λ“œμ™€ 흐름을 λ„μ‹ν™”ν•˜λ©° μ •λ¦¬ν–ˆλ‹€.
  • IoC/DI의 의미λ₯Ό ν˜„μ‹€ λΉ„μœ (도ꡬ 직접 ꡬ맀 vs 배달 λ°›κΈ°)둜 λ°”κΏ” μ΄ν•΄ν•΄λ³΄μ•˜λ‹€.
  • AOP κ°œλ…λ„ μ½”λ“œ 없이 μ‹€μƒν™œ μ˜ˆμ‹œ(λͺ¨λ“  ν•¨μˆ˜ μ•žμ— μžλ™ 둜그 찍기)둜 μ ‘κ·Όν•΄ λ³΄μ•˜λ‹€.

πŸ› οΈ ν•΄κ²° 방법

  • IoCλŠ” "객체λ₯Ό λˆ„κ°€ λ§Œλ“œλŠ”κ°€?"의 λ¬Έμ œλΌλŠ” κ±Έ νŒŒμ•… β†’ κ°œλ°œμžκ°€ λ§Œλ“œλŠ” 게 μ•„λ‹ˆλΌ Spring이 λ§Œλ“œλŠ” 것.
  • DIλŠ” "ν•„μš”ν•œ 객체λ₯Ό 슀슀둜 λ§Œλ“€μ§€ μ•Šκ³  μ™ΈλΆ€μ—μ„œ μ£Όμž…λ°›λŠ” 방식" β†’ μƒμ„±μž μ£Όμž…μ„ μ‚¬μš©ν•œ μ½”λ“œλ‘œ μ™„μ „νžˆ 이해.
  • DispatcherServlet은 λͺ¨λ“  μš”μ²­μ˜ μ§„μž…μ μ΄μž Spring MVC의 핡심. β†’ λͺ¨λ“  μš”μ²­μ„ Controllerμ—κ²Œ μ—°κ²°ν•΄μ£ΌλŠ” λ¬Έμ§€κΈ° μ—­ν• μž„μ„ λͺ…ν™•νžˆ 이해함.
  • AOPλŠ” "λͺ¨λ“  κΈ°λŠ₯λ§ˆλ‹€ λ°˜λ³΅λ˜λŠ” μ½”λ“œλ₯Ό λ”°λ‘œ λΆ„λ¦¬ν•˜λŠ” 기술" β†’ λ‘œκΉ…, λ³΄μ•ˆ, νŠΈλžœμž­μ…˜ 처리 같은 κΈ°λŠ₯을 Controller μ½”λ“œ λ°–μ—μ„œ μ²˜λ¦¬ν•  수 있게 ν•΄μ€Œ.
  • 각각의 κ°œλ…μ„ Spring Boot둜 λ°”λ€Œλ©΄ μžλ™ν™”λœλ‹€λŠ” 점과 ν•¨κ»˜ 비ꡐ μ •λ¦¬ν•˜λ©΄μ„œ κ°œλ…μ΄ 더 λͺ…확해짐.

πŸ’‘ μ•Œκ²Œ 된 점

κ°œλ… μƒˆλ‘­κ²Œ λͺ…ν™•ν•΄μ§„ 점
IoC 객체λ₯Ό 직접 λ§Œλ“œλŠ” 게 μ•„λ‹ˆλΌ Spring이 관리함 β†’ μ½”λ“œ μ œμ–΄κ°€ ν”„λ ˆμž„μ›Œν¬ 쀑심
DI μƒμ„±μžμ— ν•„μš”ν•œ 객체λ₯Ό λ„£μ–΄μ£ΌλŠ” 것 β†’ μ½”λ“œ μœ μ—°μ„±, ν…ŒμŠ€νŠΈ μš©μ΄μ„± 높아짐
DispatcherServlet Spring MVC의 μ§„μž…μ , μš”μ²­μ˜ 흐름을 μ œμ–΄ν•¨
AOP μ½”λ“œ λ°˜λ³΅μ„ μ€„μ—¬μ£ΌλŠ” 기술 β†’ 핡심 둜직 μ™Έμ˜ μ½”λ“œ(λ‘œκΉ… λ“±)λ₯Ό 뢄리해 관리 κ°€λŠ₯
Spring Boot와 비ꡐ μ§€κΈˆ λ‚΄κ°€ κ΅¬μ„±ν•œ 건 Spring MVC μˆ˜λ™ ꡬ성이고, Spring BootλŠ” 이걸 μžλ™ν™”ν•΄μ£ΌλŠ” λ„κ΅¬λΌλŠ” 점

🐳 λŠλ‚€ 점

λ‹¨μˆœνžˆ μ½”λ“œλ₯Ό 따라 μ“°λŠ” 것이 μ•„λ‹ˆλΌ "μ™œ 이 기술이 ν•„μš”ν•œκ°€?" λ₯Ό λ¨Όμ € 이해해야 전체 ꡬ쑰가 머릿속에 μž‘νžŒλ‹€λŠ” κ±Έ λŠκΌˆλ‹€.
특히 IoC/DI/AOP처럼 말만 μ–΄λ €μš΄ κ°œλ…λ„, ν˜„μ‹€ λΉ„μœ  β†’ μ½”λ“œ β†’ ꡬ쑰 흐름 β†’ Spring Boot 비ꡐ λ°©μ‹μœΌλ‘œ μ ‘κ·Όν•˜λ©΄ 훨씬 μ‰½κ²Œ 이해할 수 μžˆμ—ˆλ‹€.

πŸ‘©β€πŸ’» μ°Έκ³  자료

Metadata

Metadata

Assignees

No one assigned

    Labels

    SpringdocumentationImprovements or additions to documentationenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions