JavaWeb入门程序解析(Spring官方骨架、配置起步依赖、SpringBoot父工程、内嵌Tomcat)

news2024/9/23 5:28:15

3.3 入门程序解析

关于web开发的基础知识,我们可以告一段落了。下面呢,我们在基于今天的核心技术点SpringBoot快速入门案例进行分析。

3.3.1 Spring官方骨架

之前我们创建的SpringBoot入门案例,是基于Spring官方提供的骨架实现的。

Spring官方骨架,可以理解为Spring官方为程序员提供一个搭建项目的模板。

在这里插入图片描述

我们可以通过访问:https://start.spring.io/ ,进入到官方骨架页面

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Spring官方生成的SpringBoot项目,怎么使用呢?

  • 解压缩后,就会得到一个SpringBoot项目工程

在这里插入图片描述

在这里插入图片描述

打开pom.xml文件,我们可以看到springboot项目中引入了web依赖和test依赖

在这里插入图片描述

结论:不论使用IDEA创建SpringBoot项目,还是直接在官方网站利用骨架生成SpringBoot项目,项目的结构和pom.xml文件中内容是相似的。

3.3.2 起步依赖

在我们之前讲解的SpringBoot快速入门案例中,同样也引用了:web依赖和test依赖

在这里插入图片描述

spring-boot-starter-web和spring-boot-starter-test,在SpringBoot中又称为:起步依赖

而在SpringBoot的项目中,有很多的起步依赖,他们有一个共同的特征:就是以spring-boot-starter-作为开头。在以后大家遇到spring-boot-starter-xxx这类的依赖,都为起步依赖。

起步依赖有什么特殊之处呢,这里我们以入门案例中引入的起步依赖做为讲解:

  • spring-boot-starter-web:包含了web应用开发所需要的常见依赖
  • spring-boot-starter-test:包含了单元测试所需要的常见依赖

spring-boot-starter-web内部把关于Web开发所有的依赖都已经导入并且指定了版本,只需引入 spring-boot-starter-web 依赖就可以实现Web开发的需要的功能

在这里插入图片描述

Spring的官方提供了很多现成的starter(起步依赖),我们在开发相关应用时,只需要引入对应的starter即可。

官方地址:https://docs.spring.io/spring-boot/docs/2.7.2/reference/htmlsingle/#using.build-systems.starters

在这里插入图片描述

每一个起步依赖,都用于开发一个特定的功能。

举例:当我们开发中需要使用redis数据库时,只需要在SpringBoot项目中,引入:spring-boot-starter-redis ,即可导入redis开发所需要的依赖。

3.3.2 SpringBoot父工程

在我们之前开发的SpringBoot入门案例中,我们通过maven引入的依赖,是没有指定具体的依赖版本号的。

在这里插入图片描述

为什么没有指定版本号,可以正常使用呢?

  • 因为每一个SpringBoot工程,都有一个父工程。依赖的版本号,在父工程中统一管理。

在这里插入图片描述

3.3.3 内嵌Tomcat

问题:为什么我们之前书写的SpringBoot入门程序中,并没有把程序部署到Tomcat的webapps目录下,也可以运行呢?

原因呢,是因为在我们的SpringBoot中,引入了web运行环境(也就是引入spring-boot-starter-web起步依赖),其内部已经集成了内置的Tomcat服务器。

我们可以通过IDEA开发工具右侧的maven面板中,就可以看到当前工程引入的依赖。其中已经将Tomcat的相关依赖传递下来了,也就是说在SpringBoot中可以直接使用Tomcat服务器。

在这里插入图片描述

当我们运行SpringBoot的引导类时(运行main方法),就会看到命令行输出的日志,其中占用8080端口的就是Tomcat。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

gite+picgo+typora打造个人免费笔记软件

文章目录 1️⃣个人笔记软件2️⃣ 配置教程2.1 使用软件2.2 node 环境配置2.3 软件安装2.4 gite仓库设置2.5 配置picgo2.6 测试检验2.7 github教程 🎡 完结撒花 1️⃣个人笔记软件 最近换了环境,没有之前的生产环境舒适,写笔记也没有劲头&…

R语言实现对模型的参数优化与评价KS曲线、ROC曲线、深度学习模型训练、交叉验证、网格搜索

目录 一、模型性能评估 1、数据预测评估 2、概率预测评估 二、模型参数优化 1、训练集、验证集、测试集的引入 2、k折线交叉验证 2、网格搜索 一、模型性能评估 1、数据预测评估 ### 数据预测评估 #### 加载包,不存在就进行在线下载后加载if(!require(mlben…

VMware Vsphere创建虚拟机

作者:红米 一、上传系统镜像 1、打开数据中心 2、新建文件夹,存放镜像 3、点击上传文件按钮 4、找到本地镜像上传 二、安装虚拟机 1、创建虚拟机 2、选择创建类型 3、为虚拟机命名并选择虚拟机安装的所在位置 4、选择计算资源 5、选择存储 6、选择兼容…

微服务

微服务 SpringCloud的五大组件 eureka服务注册和发现 nacos的工作流程 nacos和eureka的区别 负载均衡 ribbon负载均衡策略 如何自定义负载策略 服务雪崩 服务熔断 为服务端监控 项目中的限流 seata xa模式 AT模式 tcc模式 分布式服务接口幂等 分布式任务调度

2024年CSP-J暑假冲刺训练营(1):分析往年真题

考纲大览 一、往年真题1. 2019-2023 真题2. 整体分析 二、类型分析三、押题 一、往年真题 1. 2019-2023 真题 2. 整体分析 首先大家一定要明确,CSP-J 是不会给大家占便宜的,所以大家可以看到,即使被标注了"入门"难度的题目&#…

【性能测试】第二节.loadrunner工具介绍(LR)

文章目录 前言一、VUG:虚拟用户发生器 1.1 实现作用 1.2 创建一个新的性能测试脚本 1.3 打开LR自带的web系统 1.4 编写性能测试脚本流程方法 1.5 性能测试脚本的增强二、Controller 2.1 基础功能介绍 2.2 Design 2.3 Run三…

<Qt> 信号和槽

目录 一、信号和槽概述 二、信号和槽的使用​​​​​​ (一)connect函数 (二)实现一个点击按钮关闭窗口的功能 (三)再谈connect 三、自定义槽函数 四、自定义信号 五、带参数的信号和槽 六、信号…

Clonezilla 备份还原过程推送日志到 syslog

Clonezilla 备份、还原过程中,系统的运行日志只能显示到客户端显示器上,如果出现错误,无法在服务端查询到对应的日志,一是故障判断不太方便;另一方面,实现日志推送,也可以将 Clonezilla 运行进度…

【前端】ikun-qrcode:极简的二维码生成组件,使用view而非canvas避免层级问题

文章目录 背景ikun-qrcode界面效果如何发布一款自己的插件到uniapp市场。(5分钟搞定) 背景 之前在uniapp上100行搞定二维码生成, 现在封装为vue组件分享出来: 下载地址: https://ext.dcloud.net.cn/plugin?id19351 …

吐血整理如何在Google Earth Engine上写循环 五个代码实例详细拆解

引言 这篇文章主要解答GEE中.map()和.iterate()函数的用法。 首先解答一个疑问,为什么需要自己写循环?确实,GEE 为各种数据类型提供了无数常用的内置函数,对这些方法做排列组合足以应对大多数使用场景,算法效率也颇佳。…

台风预警新选择:太阳能LED宣传信号杆

台风预警新选择:太阳能LED宣传信号杆 以下是对台风灾害的严重性、传统预警方式的不足以及太阳能台风预警宣传信号杆的出现和优势等方面进行分析和归纳: 一、台风灾害的严重性 台风作为一种强烈的自然灾害,给沿海地区带来了极大的威胁。台风…

【数学建模】——【线性规划】及其在资源优化中的应用

目录 线性规划问题的两类主要应用: 线性规划的数学模型的三要素: 线性规划的一般步骤: 例1: 人数选择 例2 :任务分配问题 例3: 饮食问题 线性规划模型 线性规划的模型一般可表示为 线性规划的模型标准型&…

论文学习——基于自适应选择的动态多目标进化优化有效响应策略

论文题目:Effective response strategies based on adaptive selection for dynamic multi-objective evolutionary optimization 基于自适应选择的动态多目标进化优化有效响应策略(Xiaoli Li a,b,c, Anran Cao a,∗, Kang Wang a)Applied S…

活动报名 | 智源研究院数据与行业应用Workshop

7月25日周四下午14点,智源人工智能研究院将联合中国互联网协会人工智能工委会、中国AIIA联盟数据委员会、共同举办数据与行业应用 Workshop~ 届时,智源的技术专家将介绍行业数据集和千万级指令微调数据集的构建思路和获取方法。更有来自北京…

【QGroundControl二次开发】二.使用QT编译QGC(Windows)

【QGroundControl二次开发】一.开发环境准备(Windows) 二. 使用QT编译QGC(Windows) 2.1 打开QT Creator,选择打开项目,打开之前下载的QGC项目源码。 编译器选择Desktop Qt 6.6.3 MSVC2019 64bit。 点击运…

Java项目打包成exe

文章目录 1.使用 exe4j 工具2.导出 jar 包3.转化 1.使用 exe4j 工具 安装激活: https://www.cnblogs.com/jepson6669/p/9211208.html 2.导出 jar 包 使用 mvn 的 package 导出默认没有依赖包,这里从 IDEA 的 Artifacts 导出。 // 导出路径为了方便…

鱼眼相机变普通相机,利用Transform进行球面变换

Abstract 高分辨率广角鱼眼图像在自动驾驶等机器人应用中变得越来越重要。然而,使用普通的卷积神经网络或视觉变换器处理这类数据时会遇到问题,因为在将其投影到平面上的矩形网格时会引入投影和失真损失。为了解决这个问题,我们引入了HEAL-S…

强化学习的数学原理(2)

Value iteration & Policy itreation Value iteration algorithm 之前我们已经讲过怎么去求解贝尔曼最优公式,是利用contraction mapping theorem 来进行求解,我们知道这个contraction mapping theorem是一个迭代算法,实际上这个算法他有…

在mybatis-plus中关于@insert注解自定义批处理sql导致其雪花算法失效而无法自动生成id的解决方法

受到这位作者的启发 > 原文在点这里 为了自己实现批量插入&#xff0c;我在mapper层使用insert注解写了一段自定义sql //自定义的批量插入方法 Insert("<script>" "insert into rpt_material_hour(id,sample_time,rounding_time,cur_month,machine_no…

【技术追踪】TeethDreamer:从 5 张口腔照片实现三维牙齿重建(MICCAI-2024)

三维重建搞起来~ TeethDreamer&#xff1a;一种3D牙齿重建新框架&#xff0c;旨在恢复上下牙齿的形状和位置&#xff0c;引入大型扩散模型的先验知识和3D感知特征注意力机制&#xff0c;重建性能表现SOTA&#xff01; 论文&#xff1a;TeethDreamer: 3D Teeth Reconstruction f…