Springboot如何集成SpringMVC
2021-06-06 03:04
标签:nic conf figure tin 构造 aaaaa frame sni ict 在autoconfigure模块的spring.factories中,有自动配置类DispatcherServletAutoConfiguration: 进入这个配置类,可以知道这个自动配置只有是Web Application并且发现有DispatcherServlet类的时候才会生效。 那么是什么时候加载这个配置类的呢? 上图的start会调用LifecycleBase#start方法,接着会调用LifecycleBase#init方法,然后会调用initInternal(),最后会调用StandardServer#startInternal,在这个方法里面,会调用StandardContext#startInternal这个方法,然后循环调用initializer的onStartup: onStartUp方法会回调去执行ServletWebServerApplicationContext的selfInitialize方法,ServletContextInitializerBeans 从beanFactory中获取spring容器中所有的ServletContextInitializer实现(filter列表以及servlet都添加进去) 其中留意getServletContextInitializerBeans回去創建type是ServletContextInitializer的bean 出乎我意料的是獲取到的bean names是dispatcherServletRegistration?然後T bean = beanFactory.getBean(name, type);根據name=dispatcherServletRegistration,type=org.springframework.boot.web.servlet.ServletContextInitializer去創建bean,原來根據dispatcherServletRegistration從缓存中获取到了下面的BeanDefinition: 这里找到了一个重要的自动配置类DispatcherServletAutoConfiguration 然后就是开始根据这个BeanDefinition开始创建Bean了吧,创建Bean的过程中,调用了一个Factory Method: 嗯,这里开始创建org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration,getBean又开始调用doGetBean: 实例化bean的时候会调用构造方法,紧接着实例化DispatcherServlet: 以上大部分都是讲怎么获取到核心的配置类,怎么创建DispatcherServlet,创建完成后,ServletContextInitializer最终返回下面两个bean: 獲取到ServletContextInitializer的bean之後,會執行 beans.onStartup(servletContext),主要执行了RegistrationBean,EchoServer,dispatcherServletRegistration...逐个把这些bean注册到ServletContext中. 更多了解请关注一米源码公众号并回复SpringBoot或https://itproject-manager.com/ Springboot如何集成SpringMVC 标签:nic conf figure tin 构造 aaaaa frame sni ict 原文地址:https://www.cnblogs.com/jovic/p/14617777.html
文章标题:Springboot如何集成SpringMVC
文章链接:http://soscw.com/index.php/essay/91092.html