这篇文章主要讲解了“springboot省去web.xml配置的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“springboot省去web.xml配置的方法是什么”吧!
概述
最开始使用原生的springmvc时,总是免不了有如下xml配置
<!-- Spring MVC配置 --><!-- ====================================== --><servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup></servlet><servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>public interface ServletContainerInitializer { public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException; }
springboot的实现
首先spring在META-INF/services下配置了这个类,让整个web容器启动后可以找到并启动这个类
SpringServletContainerInitializer
@HandlesTypes(WebApplicationInitializer.class)public class SpringServletContainerInitializer implements ServletContainerInitializer { @Override public void onStartup(Set<Class<?>> webAppInitializerClasses, ServletContext servletContext) throws ServletException { List<WebApplicationInitializer> initializers = new LinkedList<WebApplicationInitializer>(); //.... 省略容错的一些代码 initializers.add((WebApplicationInitializer) waiClass.newInstance()); //.... AnnotationAwareOrderComparator.sort(initializers); for (WebApplicationInitializer initializer : initializers) { initializer.onStartup(servletContext); } }}
startup的逻辑很简单,web容器启动后,调用所有WebApplicationInitializer的onStartup方法。
WebApplicationInitializer 的实现SpringBootServletInitializer
@Overridepublic void onStartup(ServletContext servletContext) throws ServletException { //.... WebApplicationContext rootAppContext = createRootApplicationContext( servletContext); //...}
protected WebApplicationContext createRootApplicationContext( ServletContext servletContext) { //... return run(application);}
一般使用Springboot的时候,都会继承一个类SpringBootServletInitializer,在这个类的onStartup方法中,启动了整个Spring容器。
本地启动springboot时,我们一般会写一个类似于这样的main方法。
上述分析也解释了为啥把springboot应用部署到机器上,tomcat能够找到springboot的入口,并启动它。
DispatcherServlet的配置
关于springboot如何加载类并启动的这里就不介绍了。
这里说明下究竟Springboot如何配置DispatcherServlet的
1)当类路径下存在DispatcherServlet时候,该配置生效。
2)这个配置会在DispatcherServletAutoConfiguration配置完之后再配置。
DispatcherServletAutoConfiguration配置
看到这里就是我们非常熟悉的springboot的使用了。springboot在DispatcherServletConfiguration这个类里对DispatcherServlet进行了配置以及注册。
感谢各位的阅读,以上就是“springboot省去web.xml配置的方法是什么”的内容了,经过本文的学习后,相信大家对springboot省去web.xml配置的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!