1、概念:SpringBoot 整合 Tomcat
2、背景
SpringBoot 本身支持有两类的 WEB 容器:默认的 Tomcat、Jetty,那么现在如果从实际的角度来看,在 SpringBoot 运行的时候 即使没有 WEB 容器,那么也可以采用自定义的方式实现 WEB 容器的启动。如果说现在只是做为一个简单的服务发布,那么的确 用不上 Tomcat,可是 Tomcat 也有自身的优势,毕竟它是一个具备有完全功能的 WEB 容器,而且在这个容器里面还可以进行各种 服务的配置,所以一些开发者认为,不应该只是纯粹的去使用微服务的方式来启动 WEB 程序,我们的程序还应该发布到 Tomcat 之中。
2.1、配置 Tomcat 运行
1、 如果一个程序项目要想发布到 Tomcat 上运行,那么该项目一定要设置为 war 文件,于是首先第一步就需要修改项目的类型为 war,修改 pom.xml 配置文件:
· 首先将打包的类型设置为 war 文件:
<packaging>war</packaging>
· 项目最终需要进行打包操作,所以还需要设置一个 maven 的 war 文件的打包插件:
<plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <warName>study</warName> </configuration> </plugin> </plugins>
· 由于现在的项目打包为 war 文件之后需要通过 tomcat 执行,所以注销掉 jetty 的相关配置。
<!-- <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency> -->
2、 由于现在项目模块追加了新的 maven 插件,所以为了让插件起作用,则应该进行 maven 的更新处理;
3、 更新完成 maven 项目之后会提示用户你现在缺少 webapps/WEB-INF/web.xml 配置文件,所以可以通过 Tomcat 安装目录拷贝此 文件到项目之中;
4、 如果现在你的项目要想以 Tomcat 的形式运行,那么必须对 SpringBoot 的启动类做有一个简单的配置处理;
package cn.study.microboot; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication // 启动SpringBoot程序,而后自带子包扫描 @ComponentScan("cn.study.microboot") public class StartSpringBootMain extends SpringBootServletInitializer { // 必须继承指定的父类 @Override protected SpringApplicationBuilder configure( SpringApplicationBuilder builder) { return builder.sources(StartSpringBootMain.class) ; } public static void main(String[] args) throws Exception { SpringApplication.run(StartSpringBootMain.class, args); } }
5、 进行项目的maven打包处理:
6、 将生成的 study.war 文件拷贝到 tomcat/webapps 目录之中进行项目的热部署,随后启动 Tomcat 容器,来执行当前的程序文件, 访问路径:http://localhost/study/addPre;