springboot项目启动和部署: 自带tomcat

news/2025/3/10 5:53:39/文章来源:https://www.cnblogs.com/pingguomang/p/18632914

springboot项目启动:

springboot内部嵌入了tomcat,在spring-boot-starter-web里可以找到,
在这里插入图片描述

这样在研发过程中就不在需要tomcat服务器,并且springboot项目在打完jar之后,可以直接启动也不需要另外的本地tomcat。也就是说拿到springboot项目jar之后,完全可以在一台只有jdk的机器上启动了。

springboot启动

上面说过了springboot项目自带了tomcat,所以项目启动和部署不需要额外的tomcat服务器了,这里关键的是springboot项目会有一个启动类,这个是springboot项目的入口,
在这里插入图片描述

 

上面可以看出启动类需要一个关键的注解@SpringBootApplication,看下该注解 背后的内容,

@Target(ElementType.TYPE) // 注解的适用范围,其中TYPE用于描述类、接口(包括包注解类型)或enum声明
@Retention(RetentionPolicy.RUNTIME) // 注解的生命周期,保留到class文件中(三个生命周期)
@Documented // 表明这个注解应该被javadoc记录
@Inherited // 子类可以继承该注解
@SpringBootConfiguration // 继承了Configuration,表示当前是注解类
@EnableAutoConfiguration // 开启springboot的注解功能,springboot的四大神器之一,其借助@import的帮助
@ComponentScan(excludeFilters = { // 扫描路径设置(具体使用待确认)
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
...
}

 

可以看出@SpringBootApplication使用了多个注解,其中最为重要的就是
@Configuration 使用javaconfig方式进行配置,形式的Spring Ioc容器的配置类
@EnableAutoConfiguration 比较重要的,这里不做解释了
@ComponentScan 扫描注解,自动扫描并加载符合条件的组件
其实可以说,你可以使用@SpringBootApplication,你也可以使用以上三个注解都一样。
详细介绍https://www.cnblogs.com/shamo89/p/8184960.html

有个这些,你就可以简单的理解,启动一个springboot项目,会从启动类入口进去,通过@SpringBootApplication注解之后自动的去扫描加载一些javaconfig 配置,启动内置tomcat将项目运行起来。

springboot项目部署方式

启动方式一,jar包(官方推荐):

我们以前在部署web项目的时候基本山都是打成war包放到tomcat的webapp下面,启动tomcat。这种方式不仅仅耗时耗力,还需要要求部署项目的服务器事先就要有能够部署的环境。有时候还需要手动修改tomcat配置文件。
springboot就是极大的简化了项目的部署。
我们只需要将项目打成jar包,然后放在只需要有jdk的服务器上,java -jar ***就能启动项目了。

那么问题来了,以往我们对于web项目都是war包的形式进行部署的,为啥springboot项目却能想启动java应用程序一样部署呢?
上面也已经说过了,springboot是内置tomcat了的,所以项目启动的时候回自动启动tomcat,但是我们都知道启动jar文件都是需要有主类(main)
没错,它是就是我们的启动类,既然是主类,那肯定就会有启动弄类配置的吧,就是这个maven-shade-plugin,去找找看。

 果然是有的,所以说现在问题都解决了,springboot通过maven插件配置了启动类,所以就可以java -jar的形式启动项目,启动类被启动之后就会扫描加载配置,启动内置的tomcat等,最后完成了项目的启动部署了。

启动方式二,war包

1.传统的部署方式:将项目打成war包,放入tomcat 的webapps目录下面,启动tomcat,即可访问。
开发环境:jdk1.8 + IDEA
2.修改pom.xml
完整pom.xml代码如下

4.0.0

<groupId>com.example</groupId>
<artifactId>demo1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 这里打成war包 若打jar,需将war改为jar -->
**<packaging>war</packaging>**<name>demo1</name>
<description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.4.RELEASE</version><relativePath/> <!-- lookup parent from repository -->
</parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version>
</properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
</dependencies><build><finalName>demo1</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

3.打包
这里可以直接到项目根目录下面:运行 maven package命令,打包。
4.将war放入外部tomcat的webapps目录下
5.启动tomcat
以上就是关于springboot和tomcat之间关系的使用总结,早上吃饭时候被曹宝问的一脸懵,查了查资料,总结以上,望大家指点,共勉曹宝,谢谢。

参考:https://www.cnblogs.com/takemyjavalisfe/p/13587864.html

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/859322.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python脚本定期删除EFK日志索引

使用pyhon脚本删除50天前的日志pip install Elasticsearch pip install datetime !/usr/bin/python3 from elasticsearch import Elasticsearch from datetime import datetime, timedelta Elasticsearch服务器地址,默认本地为localhost,可按需替换 es_host = "localhos…

私有化部署视频平台EasyCVR小知识:如何测试网络设置对RTSP流效率的影响?

在现代视频监控系统中,RTSP流的效率和在Web端的播放能力是衡量系统性能的关键指标。本文将探讨如何测试网络设置对RTSP流效率的影响,并介绍如何使用EasyCVR平台解决RTSP流在Web端的播放问题,以确保视频监控系统的高效运行和用户体验的优化。一、如何测试网络设置对RTSP流效率…

HTML画布canvas绘制图形,解决拖影问题

在使用HTMl画面 canvas 绘制矩形,圆等图形时,总是出现拖影。 解决这个问题有很多中方法: 方法一:鼠标移动过程中中不画上去,在释放鼠标的时候绘制上去,这样就看不到拖影,但是看不到绘制过程 方法二:在鼠标移动的时候,清除上一次绘制的矩形,然后在画,这样就没有拖影了…

【消息中间件】稳定性建设之SLA浅述

最近参与了部门消息服务的架构升级和稳定性保障,以此文简单总结下当建设和负责维护中间件稳定性时必备的SLA基础知识,一并调研了目前国内外商业化的云消息中间件产品SLA相关情况,最后附上个人在维护消息中间件和支持不同业务场景时的一些通用性粗浅思考,有不恰当的地方欢迎…

以旧换新政策中的数字化协作路径探索

政府发布的《汽车以旧换新补贴政策》为促进汽车消费、优化车辆结构提供了强有力的支持。然而,这一政策的落地实施,涉及多方协同,包括政策文件解读、销售渠道配合、消费者补贴申请等复杂流程。为了应对这些流程的高效管理,企业需要借助数字化协同工具,提升内部及外部的工作…

DataGrip2024.3完整版的安装教程(附激活,常见问题处理)

卸载老版本 DataGrip 首先,如果小伙伴的电脑上有安装老版本的DataGrip , 需要将其彻底卸载掉,如下所示(没有安装则不用管,直接安装即可): TIP:如果你之前使用过本站提供的 激活到 2025 年版本脚本,需要执行对应卸载脚本 /适用2024版本/JetBrains 2023 最新全家桶/jetbra…

HDFS操作02(遇到的问题和解决)

编程实现一个类“MyFSDataInputStream”,该类继承“org.apache.hadoop.fs.FSDataInputStream”,要求如下:实现按行读取HDFS中指定文件的方法“readLine()”,如果读到文件末尾,则返回空,否则返回文件一行的文本。查看Java帮助手册或其它资料,用“java.net.URL”和“org.a…

3083. 字符串及其反转中是否存在同一子字符串

给你一个字符串 s ,请你判断字符串 s 是否存在一个长度为 2 的子字符串,在其反转后的字符串中也出现。 如果存在这样的子字符串,返回 true;如果不存在,返回 false 。 示例 1: 输入:s = "leetcode" 输出:true 解释:子字符串 "ee" 的长度为 2,它也…

19款顶级测试用例管理工具全面解析

在当今数字化飞速发展的时代,软件测试的重要性日益凸显,而一款优秀的测试用例管理工具能够极大地提升测试效率与质量,帮助团队更高效地发现软件中的问题,确保产品的稳定性和可靠性。本文将为您全面解析19款顶级的测试用例管理工具,带您深入了解它们的特点与优势,助您在众…

OCR实践-Table-Transformer

前言 书接上文OCR实践—PaddleOCRTable-Transformer 与 PubTables-1M table-transformer,来自微软,基于Detr,在PubTables1M 数据集上进行训练,模型是在提出数据集同时的工作, paper PubTables-1M: Towards comprehensive table extraction from unstructured documents,发…

新能源汽车门店运营优化:项目管理工具的实践与探索

项目管理工具通过优化任务管理、增强团队协作、提升资源利用效率以及加强数据分析与决策支持等多个方面,显著提升了新能源汽车门店的运营效率。门店管理者应充分利用这些工具的功能和优势,不断优化门店的运营流程和管理方法,以应对日益激烈的市场竞争。项目管理工具在新能源…