Spring MVC Study
๐ Learning DispatcherServlet initialization & service process
Spring Version: 4.3.3
Build tool: Gradle
์คํ๋ง MVC Reference ๋ฒ์ญ ์ ๋ณด
Study Database
DispatcherServlet ์ ๊ตฌ์กฐ
-
Servlet ์์ ๊ตฌ์กฐ
- [Spring] DispatcherServlet :
doDispatcher
๋ฉ์๋๋ฅผ ์ด์ฉํด web request ๋ฅผ ์ฒ๋ฆฌํ๋ ์ค์ ์ฒ๋ฆฌ ํด๋์ค - [Spring] FrameworkServlet : ์๋ธ๋ฆฟ ์น ํ๋ ์์ํฌ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ
do*
๋ฉ์๋๋ฅผ ๋ค์doService
๋ฉ์๋๋ก ๋ชจ์์ฃผ๋ ์ถ์ํด๋์ค - [Spring] HttpServletBean :
init
๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๋ฉฐ์ค์
๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ถ์ ํด๋์ค - [Servlet] HttpServlet :
service
๋ฉ์๋๋ก์ ์์ฒญ์do*
๋ฉ์๋๋ก ์ ๋ฌํ๋ ์ถ์ํด๋์ค - [Servlet] GenericServlet : ServletConfig ์
์ค์
์ ๋ด๋นํ๋ ์ถ์ํด๋์ค - [Servlet] Servlet(interface) : Servlet ์
์๋ช ์ฃผ๊ธฐ
๋ฅผ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค (init, service, destroy)
- [Spring] DispatcherServlet :
-
ApplicationContext ๊ตฌ์ฑ ๋ฐ ์ด๊ธฐํ
- ApplicationContext ์์ฑ: FrameworkServlet#createWebApplicationContext()
- BeanFactory ์์ฑ: AbstractRefreshableApplicationContext#refreshBeanFactory()
- BeanDefinition ๋ก๋ฉ: AnnotationConfigWebApplicationContext:loadBeanDefinitions()
- BeanPostProcessor ๋ฑ๋ก: PostProcessorRegistrationDelegate:registerBeanPostProcessors()
- SingletonBean (์ ์ฒ๋ฆฌ)๋ฏธ๋ฆฌ ๋ฑ๋ก: DefaultListableBeanFactory:preInstantiateSingletons()
ApplicationContext ๋ฅผ ์์ฑ(์ด๊ธฐํ)ํ๋ ์ฒซ ๋จ๊ณ๋ DispatcherServlet ์ ๋ถ๋ชจ ํด๋์ค์ธ HttpServletBean ์ init() ๋ฉ์๋์ด๋ค. ์ด ํด๋์ค๋ Servlet Spec ์ ๋ฐ๋ผ init ๋ฉ์๋๋ฅผ ํธ์ถํ๋๋ฐ ์ด๋ FrameworkServlet ํด๋์ค์ initServletBean() ๋ฉ์๋๋ฅผ ์คํํ๋ค. ์ด ๋ถ๋ถ์ ๋ณด๋ฉด ApplicationContext ์ ์์์ง์ ์ ์ ์ ์๋ค.