springboot 排除内嵌的tomcat方法

2022-07-14 10:46:15

相关文章:
【IDEA】springboot项目打包成jar
【IDEA】IDEA 调试jar文件、springboot 的jar文件
springboot 排除内嵌的tomcat方法

前言

SpringBoot默认使用嵌入式的Servlet容器,应用打包成可执行的jar包,参见【IDEA】springboot项目打包成jar【IDEA】IDEA 调试jar文件、springboot 的jar文件

  • 优点:简单、便携
  • 缺点:默认不支持jsp,优化定制比较复杂(使用定制器serverProperties、自定义EmbeddedServletContainerCustomizer,自己编写嵌入式Servlet容器的创建工厂EmbeddedServletContainerFactory)

鉴于上面的优缺点,如果我们想使用定制功能,使用外部的tomcat,所以需要有去掉内置的tomcat,
SpringBoot使用外置的Servlet容器条件:

  • 1.安装外置Servlet容器【tomcat】
  • 2.使用war方式进行打包
    注意: 要改为<packaging>war</packaging>, 默认是jar
  • 3.去掉内置的tomcat ,这也是本篇重要要讲的内容

如何去掉内置tomcat

1.方法一,exclusions 排除打包的jar包

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency>

2.方法二

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency>

scope设置为:provided

provided 表明dependency 由JDK或者容器提供,已提供范围的依赖在编译classpath (不是运行时)可用。它们不具有传递性,也不会被打包,因此保证了不会内置tomcat了。因此,借助ide可以直接运行,但是如果通过独立的打包形式,那么就不会包含这个依赖包

内置的tomcat在哪

扩展知识,内置的tomcat在哪,其实内置的tomcat是个阉割版,已经集成在spring boot包里面,而不是独立的包引入的:

以spring-boot-2.0.3.RELEASE.jar为例:
在这里插入图片描述

参考

springboot 排除内嵌的tomcat方法

  • 作者:云川之下
  • 原文链接:https://blog.csdn.net/m0_45406092/article/details/122837894
    更新时间:2022-07-14 10:46:15