我有一个Spring-boot Web应用程序,但是我不想在嵌入式Tomcat / Jetty中启动它。禁用嵌入式容器的正确方法是什么?
如果我确实喜欢:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
我不断
org.springframework.context.ApplicationContextException: Unable to start embedded container;
由于您使用的是Maven(而不是Gradle),请查阅本指南和官方文档的这一部分。
基本步骤是:
使嵌入式Servlet容器成为 提供的 依赖项(因此从产生的战争中将其删除)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
添加一个应用程序初始化程序,例如:
import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.web.SpringBootServletInitializer; public class WebInitializer extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(Application.class); } }
该类是必需的,以便能够引导Spring应用程序,因为没有web.xml使用它。
web.xml