Please enable JavaScript.
Coggle requires JavaScript to display documents.
Servlet加载过程 (web.xml (运行时动态注册servlet ServletContext#addServlet()…
Servlet加载过程
web.xml
WebServlet
WebFilter等注解
代替web.xml
spring boot依旧兼容servlet 3.0注解
让启动类扫描到这些注解
ServletComponentScan
运行时动态注册servlet
ServletContext#addServlet()
要么在ServletContainerInitializer 的 onStartup() 方法中调用
容器启动时使用SPI来发现ServletContainerInitializer 的实现类
容器将 WEB-INF/lib 目录下 JAR 包中的类都交给该类的 onStartup() 方法处理
用这些类创建servlet并加载到容器中
SpringServletContainerInitializer
不直接注册servlet
委托给WebApplicationInitializer
AbstractDispatcherServletInitializer#registerDispatcherServlet
spring boot
使用内嵌的tomcat时
不使用SpringServletContainerInitializer
进入TomcatStarter#onStartup()
TomcatStarter不是通过SPI加载
调用ServletContextInitializer的onStartup 方法
EmbeddedWebApplicationContext$1匿名类
实现了ServletContextInitializer接口
2 more items...
要么在ServletContextListener 的 contexInitialized 方法中调用
定义ServletRegistrationBean 和 FilterRegistrationBean等bean
并注入到容器中
继承RegistrationBean
实现ServletContextInitializer
servlet 3.0以前的时代
servlet 3.0 新特性