Eri*_*ang 6 java spring spring-mvc spring-boot
我试图找出spring-boot,WebApplicationInitializer实际注册调度程序servlet的实现.
我没有找到任何部分代码SpringBootServletInitializer或其父类型做到这一点.
相反,AbstractDispatcherServletInitializer做的工作,但它是抽象的,我无法在Eclipse的帮助下找到任何具体的实现.
那么,实际调用哪一类代码来为springMVC注册调度程序servlet?
这是一个后续问题:spring-boot如何为特定网址提供服务?
Art*_*kov 20
下面是最终注册的Spring Boot初始化步骤的描述DispatcherServlet.
@EnableAutoConfiguration
public class TestSpring {
public static void main(String[] args) throws Exception {
SpringApplication.run(TestSpring.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
以下是步骤:
SpringApplication.run()创建EmbeddedWebApplicationContext应用程序上下refresh()方法;TestSpring.它寻找导入注释.EnableAutoConfiguration是其中之一.对于导入注释,刷新过程从注释中获取相应的类value并调用其selectImports()方法;@EnableAutoConfiguration相应的类是EnableAutoConfigurationImportSelector其selectImports()负载吨的其他导入选择器来自META-INF/spring.factories;@Bean注释的方法定义的bean ,即需要Spring上下文自动调用相应方法来实例化它们的bean;resfresh()继续并达到onRefresh(),该createEmbeddedServletContainer()方法被称为内部;ServletContextInitializer搜索并实例化了bean实现.其中之一是bean,由扩展类型的DispatcherServletAutoConfiguration.DispatcherServletRegistrationConfiguration#dispatcherServletRegistration()方法定义.正如你可以从类的名称猜测的那样,当调用它们的方法时,这样的初始化器将给定的servlet(在本例中为DispatcherServlet)添加到给定的;ServletRegistrationBeanServletContextInitializerServletContextonStartup()ServletContextInitializer在上一步中找到的所有s都被传递给这个tomcat初始化 - 这是调用onStartup()那些ServletContextInitializers 的方法并DispatcherServlet创建并注册为servlet的地方 ;onRefresh()应用程序上下文结束;finishRefresh()被称为Tomcat所在最终被启动TomcatEmbeddedServletContainer.start();refresh()应用程序上下文和其它最终初始化步骤的;| 归档时间: |
|
| 查看次数: |
7104 次 |
| 最近记录: |