疑问 ?? ?
运行java web有两种方式:(1) java -jar *.jar命令 ; (2)tomcat容器
当使用springboot打包出jar包时,这个jar包可以直接 运行java -jar *.jar运行,另一种是把 *.jar移动到tomcat/webapps 中,二者的区别是什么?
理解 ! ! !
(一)
对于springboot打包出来的jar包中已经包含了嵌入式tomcat服务器的依赖项,在pom.xml文件中,导入的maven依赖spring-boot-starter-web中包含内嵌的tomcat容器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
注意:
使用java -jar默认情况下,不会启动任何嵌入式Application Server,该命令只是启动一个执行jar mian的JVM进程,
然而,当spring-boot-starter-web包含嵌入式tomcat服务器依赖项时,执行java -jar则会启动Application Server
(二)
对于移动到tomcat/webapps 中部署jar包,则是使用到外部的tomcat,这里需要注意一点:
使用外部tomcat部署时,
要不直接导包成war包,
要不排除spring-boot-starter-web中的tomcat配置(经验证,这种jar包也可以放到Tomcat webapps下面运行的。不一定非要配置exclusions)
<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>
————————————————
参考链接:Tomcat服务器上部署JAR或执行java -jar之间的区别?_BambooJin的博客-CSDN博客_jar运行和tomcat部署区别