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) ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๋ค.
์ฆ, ๊ฐ์ฒด ์์ฑ๊ณผ ํ๋ฆ ์ ์ด๋ฅผ ํ๋ ์์ํฌ๊ฐ ๋ด๋นํ๋ค.
๊ตฌํ์ฒด
BeanFactoryApplicationContext(๋ํ ๊ตฌํ์ฒด)
๐ 2. ์คํ๋ง ์ปจํ ์ด๋์ ์ญํ ๊ณผ ๊ธฐ๋ฅ
์คํ๋ง ์ปจํ ์ด๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น ์์ฑ, ๊ด๋ฆฌ, ์ฃผ์ ์ ๋ด๋นํ๋ค.
๐ ์ฃผ์ ์ญํ
1๏ธโฃ ์์กด์ฑ ์ฃผ์ (DI)
- ๊ฐ์ฒด ๊ฐ ๊ฒฐํฉ๋ ๊ฐ์
- ์คํ ์์ ์ ์์กด๊ด๊ณ ๊ฒฐ์
2๏ธโฃ ๋น ๊ด๋ฆฌ
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธํค(Singleton) ๊ด๋ฆฌ
- ๋ฉ๋ชจ๋ฆฌ ํจ์จ ๊ทน๋ํ
3๏ธโฃ ๊ตฌ์กฐ์ ํน์ง
- BeanFactory
- ๊ธฐ๋ณธ IoC ์ปจํ ์ด๋
- ApplicationContext
- i18n
- ์ด๋ฒคํธ ๋ฐํ
- ๋ฆฌ์์ค ๋ก๋ฉ
- ์ํฐํ๋ผ์ด์ฆ ๊ธฐ๋ฅ ์ ๊ณต
๐ 3. ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ์ญํ ๊ณผ ๊ธฐ๋ฅ
์๋ธ๋ฆฟ ์ปจํ ์ด๋๋ WAS์ ํต์ฌ ๊ตฌ์ฑ์์๋ก, HTTP ์์ฒญ์ ๋ฐ์ ์๋ธ๋ฆฟ์ ์คํํ๊ณ ์๋ต์ ๋ฐํํ๋ค.
๐ ์ฃผ์ ๊ธฐ๋ฅ
1๏ธโฃ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ
- ์๋ธ๋ฆฟ ์์ฑ / ์ด๊ธฐํ / ํธ์ถ / ์๋ฉธ ๊ด๋ฆฌ
2๏ธโฃ ๋ฉํฐ์ค๋ ๋ฉ
- ์์ฒญ๋ง๋ค ๋ณ๋ ์ค๋ ๋ ํ ๋น
- ๋์ ์์ฒญ ์ฒ๋ฆฌ
๐ HTTP ์์ฒญ ์ฒ๋ฆฌ ๊ณผ์
์ฒ๋ฆฌ ๋จ๊ณ
- ๋ธ๋ผ์ฐ์ โ Web Server ์์ฒญ
- Web Server โ WAS ์ ๋ฌ
- WAS โ Servlet Container ์ ๋ฌ
- ์๋ธ๋ฆฟ ์ธ์คํด์ค ์กด์ฌ ์ฌ๋ถ ํ์ธ
- ์์ผ๋ฉด ์์ฑ ๋ฐ
init() service()์คํ- ๊ฒฐ๊ณผ ๋ฐํ
๐ 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 ๋ฐํ
๐ ์ ์ฒด ๊ตฌ๋ ํ๋ฆ ์์ฝ
- Tomcat ์คํ โ
web.xml๋ก๋ - ContextLoaderListener โ Root Context ์์ฑ
- DispatcherServlet โ Servlet Context ์์ฑ
- ํด๋ผ์ด์ธํธ ์์ฒญ โ Controller ์คํ
๐ ์ฐธ๊ณ ์๋ฃ
- https://sigridjin.medium.com/servletcontainer์-springcontainer๋-๋ฌด์์ด-๋ค๋ฅธ๊ฐ-626d27a80fe5
- https://server-engineer.tistory.com/253



