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);
}
}