SpringMVC能做到不需要web.xml是利用了Servlet3.0的新特性
涉及到的Servlet 3.0新特性
1.ServletContext 对象的功能进行了加强,支持在运行时动态部署 Servlet、过滤器、监听器,以及为 Servlet 和过滤器增加 URL 映射等
2.同时新增了一个ServletContainerInitializer 接口和一个@HandlesTypes注解
3.容器在启动时使用SPI来发现 ServletContainerInitializer 的实现类,并且容器将 WEB-INF/lib 目录下 JAR 包中的类且满足@HandlesTypes注解要求的都交给该类的 onStartup() 方法处理
下面是我整的一份web容器启动后是如何加载到 Spring Mvc的DispatchServlet的流程图,以及初始DispatchServlet的初始化流程