Post

Servletcontainer

Servletcontainer

๐Ÿ“— 1. ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ & ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ๊ฐœ๋…


์Šคํ”„๋ง ๊ธฐ๋ฐ˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๊ณ ,
์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ์œ„์—์„œ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ตฌ๋™๋˜๋Š” ์ด์ค‘ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

๐Ÿ“Œ ๊ตฌ์กฐ
Servlet Container โ†’ Spring Container โ†’ Application

์„œ๋ธ”๋ฆฟ-์Šคํ”„๋ง-๊ตฌ์กฐ

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ์ฒด ์ƒ๋ช…์ฃผ๊ธฐ์™€ ๊ตฌ์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ณ ,
์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.


๐Ÿ“Œ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ(Servlet Container)

์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” ์„œ๋ธ”๋ฆฟ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์ด๋‹ค.

๋Œ€ํ‘œ์ ์ธ ๊ตฌํ˜„์ฒด๋กœ Tomcat์ด ์žˆ๋‹ค.

์›น ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ HTTP ์š”์ฒญ์„ ๋ฐ›๊ณ , ์„œ๋ธ”๋ฆฟ์„ ์‹คํ–‰ํ•œ ๋’ค ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ฃผ์š” ์—ญํ• 

  • ๋„คํŠธ์›Œํฌ ํ†ต์‹ 
    • Socket ๊ด€๋ฆฌ, ์š”์ฒญ ์ˆ˜์‹ , ์‘๋‹ต ์ „์†ก
  • ์„œ๋ธ”๋ฆฟ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ
    • ์ƒ์„ฑ โ†’ ์ดˆ๊ธฐํ™” โ†’ ์‹คํ–‰ โ†’ ์†Œ๋ฉธ
  • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ
    • ์š”์ฒญ๋งˆ๋‹ค ์Šค๋ ˆ๋“œ ํ• ๋‹น

Tomcat๊ณผ ๊ฐ™์€ WAS๋Š” Java ํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•˜์—ฌ Class๋กœ ๋งŒ๋“ค๊ณ , ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•ด Servlet ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.


๐Ÿ“Œ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ(Spring Container / IoC Container)

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” IoC(Inversion of Control) ์™€
DI(Dependency Injection) ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.

์ฆ‰, ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ํ๋ฆ„ ์ œ์–ด๋ฅผ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค.

๊ตฌํ˜„์ฒด

  • BeanFactory
  • ApplicationContext (๋Œ€ํ‘œ ๊ตฌํ˜„์ฒด)

๐Ÿ“— 2. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์˜ ์—ญํ• ๊ณผ ๊ธฐ๋Šฅ


์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋นˆ ์ƒ์„ฑ, ๊ด€๋ฆฌ, ์ฃผ์ž…์„ ๋‹ด๋‹นํ•œ๋‹ค.

๐Ÿ“Œ ์ฃผ์š” ์—ญํ• 

1๏ธโƒฃ ์˜์กด์„ฑ ์ฃผ์ž… (DI)

  • ๊ฐ์ฒด ๊ฐ„ ๊ฒฐํ•ฉ๋„ ๊ฐ์†Œ
  • ์‹คํ–‰ ์‹œ์ ์— ์˜์กด๊ด€๊ณ„ ๊ฒฐ์ •

2๏ธโƒฃ ๋นˆ ๊ด€๋ฆฌ

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ฑ๊ธ€ํ†ค(Singleton) ๊ด€๋ฆฌ
  • ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ ๊ทน๋Œ€ํ™”

3๏ธโƒฃ ๊ตฌ์กฐ์  ํŠน์ง•

  • BeanFactory
    • ๊ธฐ๋ณธ IoC ์ปจํ…Œ์ด๋„ˆ
  • ApplicationContext
    • i18n
    • ์ด๋ฒคํŠธ ๋ฐœํ–‰
    • ๋ฆฌ์†Œ์Šค ๋กœ๋”ฉ
    • ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ธฐ๋Šฅ ์ œ๊ณต

ApplicationContext ๊ตฌ์กฐ


๐Ÿ“— 3. ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ์˜ ์—ญํ• ๊ณผ ๊ธฐ๋Šฅ


์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ๋Š” WAS์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ์š”์†Œ๋กœ, HTTP ์š”์ฒญ์„ ๋ฐ›์•„ ์„œ๋ธ”๋ฆฟ์„ ์‹คํ–‰ํ•˜๊ณ  ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ“Œ ์ฃผ์š” ๊ธฐ๋Šฅ

1๏ธโƒฃ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ

  • ์„œ๋ธ”๋ฆฟ ์ƒ์„ฑ / ์ดˆ๊ธฐํ™” / ํ˜ธ์ถœ / ์†Œ๋ฉธ ๊ด€๋ฆฌ

2๏ธโƒฃ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ

  • ์š”์ฒญ๋งˆ๋‹ค ๋ณ„๋„ ์Šค๋ ˆ๋“œ ํ• ๋‹น
  • ๋™์‹œ ์š”์ฒญ ์ฒ˜๋ฆฌ

๐Ÿ“Œ HTTP ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ณผ์ •

HTTP ํ๋ฆ„

์ฒ˜๋ฆฌ ๋‹จ๊ณ„

  1. ๋ธŒ๋ผ์šฐ์ € โ†’ Web Server ์š”์ฒญ
  2. Web Server โ†’ WAS ์ „๋‹ฌ
  3. WAS โ†’ Servlet Container ์ „๋‹ฌ
  4. ์„œ๋ธ”๋ฆฟ ์ธ์Šคํ„ด์Šค ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ
  5. ์—†์œผ๋ฉด ์ƒ์„ฑ ๋ฐ init()
  6. service() ์‹คํ–‰
  7. ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜

๐Ÿ“— 4. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์™€ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ์—ฐ๋™


์ „ํ†ต์ ์ธ Spring MVC ๊ตฌ์กฐ๋Š” web.xml์—์„œ ์‹œ์ž‘๋œ๋‹ค.

์—ฌ๊ธฐ์„œ ๋‘ ์ปจํ…Œ์ด๋„ˆ์˜ ๊ณ„์ธต ๊ตฌ์กฐ๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.


๐Ÿ“Œ ๋™์ž‘ ๋‹จ๊ณ„

1๏ธโƒฃ ์„œ๋ธ”๋ฆฟ ์ปจํ…Œ์ด๋„ˆ ๊ตฌ๋™

  • WAS ์‹คํ–‰
  • WEB-INF/web.xml ๋กœ๋“œ

2๏ธโƒฃ Root Container ์ƒ์„ฑ

  • ContextLoaderListener ์‹คํ–‰
  • Root ApplicationContext ์ƒ์„ฑ

๐Ÿ’ก ContextLoaderListener

  • ServletContextListener ๊ตฌํ˜„์ฒด
  • Root Context ์ƒ์„ฑ ๋‹ด๋‹น

ApplicationContext๋Š” ํ•œ ๋ฒˆ๋งŒ ์ดˆ๊ธฐํ™”๋œ๋‹ค.


3๏ธโƒฃ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ ๊ตฌ๋™

  • ApplicationContext ์„ค์ • ๋กœ๋“œ
  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง / DAO / VO ์ƒ์„ฑ

4๏ธโƒฃ DispatcherServlet ์ƒ์„ฑ

  • Front Controller ์—ญํ• 
  • ์ตœ์ดˆ 1ํšŒ ์ƒ์„ฑ

5๏ธโƒฃ HandlerMapping ์ฒ˜๋ฆฌ

  • ์š”์ฒญ URL ๋ถ„์„
  • ์ ์ ˆํ•œ Controller ๊ฒ€์ƒ‰

6๏ธโƒฃ Controller ์‹คํ–‰

  • ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
  • ModelAndView ๋ฐ˜ํ™˜

๐Ÿ“Œ ์ „์ฒด ๊ตฌ๋™ ํ๋ฆ„ ์š”์•ฝ

  1. Tomcat ์‹คํ–‰ โ†’ web.xml ๋กœ๋“œ
  2. ContextLoaderListener โ†’ Root Context ์ƒ์„ฑ
  3. DispatcherServlet โ†’ Servlet Context ์ƒ์„ฑ
  4. ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ โ†’ Controller ์‹คํ–‰

์ „์ฒด ํ๋ฆ„


๐Ÿ“š ์ฐธ๊ณ  ์ž๋ฃŒ

  • https://sigridjin.medium.com/servletcontainer์™€-springcontainer๋Š”-๋ฌด์—‡์ด-๋‹ค๋ฅธ๊ฐ€-626d27a80fe5
  • https://server-engineer.tistory.com/253
This post is licensed under CC BY 4.0 by the author.