我在Stack Overflow上讨论了这个问题- Spring实际上是如何引导的?
它讲的是Spring,我想知道Spring启动的确切过程。
如果是web.xml
- 在Tomcat上部署Spring Boot WAR时的执行方式
- 包含
main()
的类先执行还是扩展SpringBootServletInitializer
的类先执行?什么是流动?
对于web.xml,在这里的官方文档中为旧的servlet容器创建一个可部署的war文件,它说我们需要添加一个web.xml到我们的应用程序中,并配置它通过DispatcherServlet加载ApplicationContext。我们怎么做呢?
看起来我有这样的配置,但它似乎不工作:
<servlet>
<!-- Provide a Servlet Name -->
<servlet-name>frontcontroller-dispatcher</servlet-name>
<!-- Provide a fully qualified path to the DispatcherServlet class -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<!-- Provide a Servlet Name that you want to map -->
<servlet-name>frontcontroller-dispatcher</servlet-name>
<!-- Provide a url pattern -->
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
WAR包中的main()
方法不能在Tomcat容器中运行。
例如,以下部分代码
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(UserApplication.class);
}
}