相关文章:
【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为例: