SpringBoot项目是自带tomcat服务器的,使用的时候通过SpringBoot框架启动类的main函数来启动。
但如果我们要使用外置tomcat的话,如果是直接把SpringBoot项目添加到tomcat的webapps目录下,是没办法运行成功的。
1、修改pom.xml文件中打包方式为war
<groupId>com.wn.sb</groupId>
<artifactId>SB</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
2、移除SpringBoot框架内置的tomcat
<!-- 导入web组件启动器,版本随父工程 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>Spring-boot-start-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
3、修改SpringBoot的启动类
修改SpringBoot的启动类,使其继承SpringBootServletInitializer类,并重写其中的configure方法
修改前:
package com.wn.sb;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(value = "com.wn.sb.mapper")
public class Application {
public static void main (String[] args) {
SpringApplication.run(Application.class, args);
}
}
修改后:
package com.wn.sb;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
@MapperScan(value = "com.wn.sb.mapper")
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意:这里要指向SpringBoot的引导类
return builder.sources(Application.class);
}
public static void main (String[] args) {
SpringApplication.run(Application.class, args);
}
}