work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

将spring boot项目部署到tomcat容器中

Posted on 2018-08-20 10:45  work hard work smart  阅读(401)  评论(0编辑  收藏  举报

一. 我这里用的环境

tomcat: tomcat 8

jdk: jdk 7

spring boot 版本: 1.5

 

二. 将创建好的spring boot项目做如下修改

2.1. 修改打包形式

在pom.xml中设置
<packaging>war</packaging>

2.2. 移除切入式tomcat插件

在spring-boot-starter-web,添加如下配置

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<!-- 排除内置容器,排除内置容器导出成war包可以让外部容器运行spring-boot项目-->
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-starter-tomcat</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

  

2.3,。添加servlet-api依赖

下面另种方式都可以,任选其一

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-servlet-api</artifactId>
  <version>8.0.36</version>
  <scope>provided</scope>
</dependency>  

 

2.4. 修改启动类,并重写初始化方法

/**
 *  修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
 */
public class SpringBootStartApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // 注意这里要指向原先用main方法执行的Demo3Application启动类
        return builder.sources(Demo3Application.class);
    }
}

  

2.5. 程序生成一个war文件

然后放到部署到tomcat下




三、使用Spring Boot 2.1版本时

3.1、环境

tomcat: tomcat 9

jdk: jdk 8

spring boot 版本: 2.1

 

3.2、同上面的 2.1 和2.2, 2.5 三个一样

2.3配置如下

	      <dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
		</dependency>

		<dependency>
			<groupId>org.apache.tomcat.embed</groupId>
			<artifactId>tomcat-embed-jasper</artifactId>
			<scope>provided</scope>
		</dependency>

  

2.4

@SpringBootApplication
public class MonitorTuningApplication extends SpringBootServletInitializer{

	public static void main(String[] args) {
		SpringApplication.run(MonitorTuningApplication.class, args);
	}

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
		return builder.sources(MonitorTuningApplication.class);
	}
}