相关文章:
【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方法

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐