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包

spring boot + jersey工程由jar包转为war包在tomcat中启动报错问题

spring boot 打war包

Spring Boot 2.x实践记:war包

Spring Boot 2.x实践记:war包

spring boot项目打成war包部署到tomcat