๐Ÿงฑ Spring MVC์˜ ํƒ„์ƒ ๋ฐฐ๊ฒฝ๊ณผ DispatcherServlet ์—ญํ•  ์ดํ•ดํ•˜๊ธฐ

๋„๋‘๋งจยท2025๋…„ 6์›” 27์ผ

๊ณต๋ถ€

๋ชฉ๋ก ๋ณด๊ธฐ
19/23

์•ˆ๋‚˜์˜ Spring MVC์™€ DispatcherServlet์„ ๋ณด๊ณ  ์ฃผ๊ด€์ ์œผ๋กœ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.


๐Ÿ’ก ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ์˜ ํ•ต์‹ฌ ์ฒ ํ•™

Spring์€ OCP ์›์น™(Open-Closed Principle) ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๊ณ„๋จ

โœ… ํ™•์žฅ์—๋Š” ์—ด๋ ค ์žˆ๊ณ , ๋ณ€๊ฒฝ์—๋Š” ๋‹ซํ˜€ ์žˆ๋‹ค

์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค์–‘ํ•œ ํ•˜์œ„ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋“ฑ์žฅํ•จ:

  • ๐Ÿ”น Spring JDBC
  • ๐Ÿ”น Spring MVC
  • ๐Ÿ”น Spring AOP
  • ๐Ÿ”น Spring ORM

๐Ÿ“ˆ Spring MVC์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

๊ธฐ์กด ์„œ๋ธ”๋ฆฟ ๊ธฐ๋ฐ˜ ์›น ๊ฐœ๋ฐœ์˜ ๋ฌธ์ œ์ ๋“ค:

  • โŒ ํ…Œ์ŠคํŠธ ์–ด๋ ค์›€
  • โŒ ํ™•์žฅ์„ฑ ๋ถ€์กฑ
  • โŒ ์ค‘๋ณต๋œ ์ฝ”๋“œ
  • โŒ ์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ค์›€
  • โŒ ๋””๋ฒ„๊น… ๋ณต์žก

โžก ์ด๋Ÿฐ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Spring MVC๊ฐ€ ๋“ฑ์žฅ


๐Ÿงฑ ๊ธฐ์กด ์„œ๋ธ”๋ฆฟ ๊ตฌ์กฐ์˜ ๋ฌธ์ œ

์›๋ž˜๋Š”...

  • ํ•˜๋‚˜์˜ ์„œ๋ธ”๋ฆฟ์—์„œ:
    1. ์›น ์š”์ฒญ ์ฒ˜๋ฆฌ
    2. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ
    3. ๋ทฐ ์ƒ์„ฑ ๋ฐ ์‘๋‹ต

โžก ๋ชจ๋“  ์ฑ…์ž„์ด ํ•œ ํด๋ž˜์Šค์— ์ง‘์ค‘๋จ โ†’ ์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ค์›€


โœ… ํ•ด๊ฒฐ์ฑ…: MVC ๊ตฌ์กฐ ๋ถ„๋ฆฌ

  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋ณ„๋„๋กœ ๋ถ„๋ฆฌ
  • ์„œ๋ธ”๋ฆฟ์€ ๋‹จ์ˆœํžˆ ์š”์ฒญ์„ ์ „๋‹ฌํ•˜๊ณ  ์‘๋‹ต์„ ์ˆ˜์‹ ํ•˜๋Š” ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ ์—ญํ• ๋งŒ ์ˆ˜ํ–‰

๐Ÿงญ ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ = DispatcherServlet

โœ… DispatcherServlet
= Dispatch(๋ณด๋‚ด๋‹ค) + Servlet(์›น ์š”์ฒญ/์‘๋‹ต ์ฒ˜๋ฆฌ)
= ์š”์ฒญ์„ ๋ฐ›์•„ ๋‹ค์–‘ํ•œ ์ฒ˜๋ฆฌ ๊ณผ์ •์„ ์œ„์ž„ํ•˜๋Š” ์ค‘์•™ ์ปจํŠธ๋กค๋Ÿฌ


๐Ÿ”„ Spring MVC์˜ ์š”์ฒญ ์ฒ˜๋ฆฌ ํ๋ฆ„


ํด๋ผ์ด์–ธํŠธ โ†’ DispatcherServlet โ†’ HandlerMapping
โ†’ HandlerAdapter โ†’ Controller โ†’ Model + View
โ†’ ViewResolver โ†’ View ๋ Œ๋”๋ง โ†’ ํด๋ผ์ด์–ธํŠธ

๐Ÿ”น ๊ฐ ๋‹จ๊ณ„ ์„ค๋ช…

  1. DispatcherServlet: HTTP ์š”์ฒญ ์ˆ˜์‹ 
  2. HandlerMapping: ํ•ด๋‹น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  Controller ์กฐํšŒ
  3. HandlerAdapter: Controller ์‹คํ–‰์„ ์œ„ํ•œ ์–ด๋Œ‘ํ„ฐ ์„ ํƒ
  4. Controller: ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ, Model๊ณผ View ์ด๋ฆ„ ๋ฐ˜ํ™˜
  5. ViewResolver: View ์ด๋ฆ„์„ ์‹ค์ œ View๋กœ ๋ณ€ํ™˜
  6. View: Model ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ HTML ๋ Œ๋”๋ง
  7. DispatcherServlet: ์ตœ์ข… ์‘๋‹ต ๋ฐ˜ํ™˜

๐Ÿง  DispatcherServlet์˜ ํ•ต์‹ฌ ์—ญํ• 

์—ญํ• ์„ค๋ช…
์š”์ฒญ ์ˆ˜์‹ ํด๋ผ์ด์–ธํŠธ์˜ HTTP ์š”์ฒญ์„ ์ˆ˜์‹ 
๊ณตํ†ต ์ž‘์—… ์ˆ˜ํ–‰์ธ์ฆ, ๋กœ๊น…, ์ธ์ฝ”๋”ฉ ๋“ฑ
์ปจํŠธ๋กค๋Ÿฌ ์œ„์ž„์š”์ฒญ์„ ์ปจํŠธ๋กค๋Ÿฌ์— ์œ„์ž„
๋ทฐ ์„ ํƒ ๋ฐ ๋ Œ๋”๋งViewResolver์™€ View๋ฅผ ํ†ตํ•ด ๊ฒฐ๊ณผ ๋ Œ๋”๋ง

โœจ ๋งˆ๋ฌด๋ฆฌ

  • DispatcherServlet์€ Spring MVC์˜ ํ•ต์‹ฌ ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ
  • ์—ญํ•  ๋ถ„๋ฆฌ๋ฅผ ํ†ตํ•ด ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ ํ–ฅ์ƒ
  • ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ์œ ์—ฐํ•œ ์›น ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„์— ๊ธฐ์—ฌ

0๊ฐœ์˜ ๋Œ“๊ธ€