Spring Boot以War包启动
Posted free_wings
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot以War包启动相关的知识,希望对你有一定的参考价值。
1.IDEA Spring Initializer自动构建的war包项目,自动生成的Initializer类,用于外部Tomcat容器启动该项目时调用,如果仍然使用主类main函数方式启动则与此类无关(Debug验证过了)
2.自动构建的war包项目,pom.xml中引入了:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--<scope>provided</scope>-->
</dependency>
注释的scope是我注释的,生成时打开着,这样显式引入的仍然是Spring Boot内嵌Tomcat,scope造成运行时没有内嵌Tomcat(只有编译时有),虽然引入了:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
仍然提示错误:
Unregistering JMX-exposed beans on shutdown
所以需要注释掉scope,这样内嵌的Tomcat可以启动Spring Boot Web项目,但打war包放在外置Tomcat时就不需要了,要使用exclude干掉内嵌Tomcat,或像现在这样使用scope在运行时不使用内嵌Tomcat。这时需要外置Tomcat使用这里生成的Initializer类:
package com.xiaobai.springbootwebdemo;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringbootwebdemoApplication.class);
}
}
Initializer类分析:
以上是关于Spring Boot以War包启动的主要内容,如果未能解决你的问题,请参考以下文章
Spring boot demo: spring boot生成war包