当前位置: 首页 > article >正文

JavaEE-SpringBoot快速入门

文章目录

  • 本节目标
  • Maven
    • 什么是Maven
    • 创建一个Maven项目
    • maven项目功能
    • maven的依赖管理
    • 全球仓库, 私服, 本地服务器, 配置国内镜像
  • 第一个SpringBoot项目
    • 创建项目
    • 运行SpringBoot程序
  • SpringBoot原理初步
    • Web服务器
  • 总结

本节目标

  • 了解什么是maven, 配置国内源
  • 使用Springboot创建项目

关于环境准备, 由于社区版的限制过多, 所以建议直接上专业版, 因为专业版是收费的, 所以你可以采用一些 “科技” 手段来绕开…, 我们下面提供一些途径
教程链接


Maven

什么是Maven

maven就是一个项目管理工具, 基于POM(Project Object Model, 项目对象模型)的概念, 通过一小段信息的描述, 来进行项目的管理与创建

简单点说就是Maven是一个项目管理工具, 通过POM.xml配置文件添加jar包(也就是添加依赖), 而不是手动的添加jar包, 其实我们在JDBC的那一篇章也学习过Maven, 我们这里只是做一个简单的复习


创建一个Maven项目

早期的时候, 我们需要手动的添加Maven, 但是现在, idea已经自动包含了Maven, 所以不需要我们程序员进行手动的添加

下面是创建maven项目的流程
在这里插入图片描述
在这里插入图片描述
我们创建的Maven项目中, 都会包含一个pom.xml, 这其实就是添加依赖的配置文件

maven项目功能

打开maven项目的管理列表

在这里插入图片描述
Lifecycle表示这个项目的生命周期, 其中有多条指令

  • clean: 清理所有的target标签下的文件
  • compile: 编译当前的Java文件]
  • package: 把这个maven项目打包为一个jar文件

当执行package打包功能的时候, 会把上面的所有指令全部执行一遍…

在这里插入图片描述

会发现, 打包之后的jar文件存在target目录下面

在这里插入图片描述
上面是日志的信息, 里面也存在jar包的内容


maven的依赖管理

我们maven的核心就是通过管理pom.xml中的依赖来管理项目
我们依赖的查询可以直接在全球仓库(全球唯一)上面查, 也可以在一些辅助平台上面查, 但是这两种平台可能会存在"时差", 也就是全球仓库发布, 但是辅助平台没有发布的情况

全球仓库: 全球仓库链接
辅助平台链接: 辅助平台链接

简单介绍一下依赖(拿mysql为例)

查找依赖(全球仓库)
在这里插入图片描述
分级查询即可

查找依赖(辅助平台)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过这种方式直接查出来依赖的内容, 稍后我们会在pom.xml中进行依赖的导入

在这里插入图片描述
下面的<dependency>标签中的内容就是导入的依赖信息
关于标签的几个属性, 我们简单介绍一下

  • groupId: 组织名称(一般都是某某公司)
  • artifactId: 项目名称(就是开发的某某项目)
  • version: 代表该项目的版本信息(大, 中, 小 三个版本)

在这里插入图片描述

查看上面的这个文件下的内容, 会发现, 我们不仅仅导入了MySQL这个依赖, 还导入了protobuf这个依赖(除开内置的JDK17), 这是怎么回事呢
实际上, 我们在导入mysql依赖的同时, 也进行了protobuf的导入, 也就是说, mysql这个依赖也依赖于protobuf, 当依赖少的时候还好办, 但是一旦依赖多了, 依赖之间的逻辑层次就不好判断了…

所以我们安装一个maven helper来管理依赖之间的关系
在这里插入图片描述
重启idea生效之后, 我们再次查看刚才的依赖关系

在这里插入图片描述
在这里插入图片描述
可以以列表的形式, 或者是树的形式展开, 这样我们的依赖关系就很清晰了


排除某个依赖

假如我们依赖a依赖于b, 但是此时我们不想要b依赖了, 拿上面的例子来说就是mysql不想依赖protobuf了, 我们就可以排除这个依赖

在这里插入图片描述
在这里插入图片描述
pom文件就变成了上面的样子…

全球仓库, 私服, 本地服务器, 配置国内镜像

这一部分内容, 我们在JDBC那一节已经介绍过了…


第一个SpringBoot项目

创建项目

直接上企业版, 上面给出来科技方法了…社区版很麻烦

在这里插入图片描述

下面是大致的介绍

  • Name: 项目名称
  • Type: 选maven
  • Group: 组织Id
  • ArtifactId: 项目Id

在这里插入图片描述
我们选择Springboot的版本是3.4.2(不要选择带有SNAPSHOT的快照版本)
然后依赖这里我们暂时勾选Spring Web, 其实后面了解就知道了, 这其实就是Spring MVC
创建项目成功后, 我们查看一下pom文件
在这里插入图片描述
这是springboot的基础的一些信息, 也是父工程, 下面的一些没有版本号的依赖, 实际上版本号都在这里面保存

在这里插入图片描述
这里没什么用, 就是一些商标, 版权…等等信息(删除就行)
在这里插入图片描述
第一个是Web开发相关的依赖
第二个是单元测试相关的依赖
第三个是相关的maven插件的依赖

运行SpringBoot程序

在这里插入图片描述
含有@SpringBootApplication注解的就是SpringBoot程序的启动类, 作为程序的入口出现

在这里插入图片描述
创建一个测试的程序进行验证
我们添加了@RestController注解(实质上是作为一种待扫描的标志使用)
@RequestMapping注解是资源路径的注解, 分为类路径(不一定存在)和方法路径(一定存在)
资源路径 = 类路径 + 方法路径
我们现在启动SpringBoot程序
在这里插入图片描述
现在就表示SpingBoot启动成功了, 我们打开浏览器输入URL来访问这个服务器程序
在这里插入图片描述
关于为什么端口号是8080, 下面我们会解释


SpringBoot原理初步

Web服务器

在这里插入图片描述
前⾯我们已经学习了 HTTP 协议, 知道了 HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式.
Web 服务器就是对HTTP协议进⾏封装, 程序员不需要直接对协议进⾏操作(自己写代码去解析http协议规则),让Web开发更加便捷, 所以Web服务器也被称为WWW服务器, HTTP服务器, 主要功能是提供⽹上信息浏览服务.
常见的Web服务器有: Apache,Nginx, IIS, Tomcat, Jboss等
SpringBoot 内置了Tomcat服务器, ⽆需配置即可直接运⾏
Tomcat服务器的默认端口号是8080, 所以我们的URL中的默认端口号就是8080
在这里插入图片描述


总结

  • Spring Boot 是为了快速开发 Spring ⽽诞⽣的, Spring Boot 具备:
  • Spring Boot 提供了启动添加依赖的功能, 可以快速集成框架.
  • 内置web服务器,⽆需配置 Tomcat 等 Web服务器,直接运⾏和部署程序.
  • 可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发.
  • ⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况等特点.
  • Spring Boot 可使⽤ Idea 或⽹⻚创建,它的设计思想是约定⼤于配置,类上标注
    @SpringBootApplication 就可以启动 Spring Boot 项⽬了.

相关文章:

JavaEE-SpringBoot快速入门

文章目录 本节目标Maven什么是Maven创建一个Maven项目maven项目功能maven的依赖管理全球仓库, 私服, 本地服务器, 配置国内镜像 第一个SpringBoot项目创建项目运行SpringBoot程序 SpringBoot原理初步Web服务器 总结 本节目标 了解什么是maven, 配置国内源使用Springboot创建项…...

游戏引擎学习第107天

仓库:https://gitee.com/mrxiao_com/2d_game_2 回顾我们之前停留的位置 在这段内容中&#xff0c;讨论了如何处理游戏中的三维效果&#xff0c;特别是如何处理额外的“Z层”。由于游戏中的艺术资源是位图而不是3D模型&#xff0c;因此实现三维效果变得非常具有挑战性。虽然可…...

Sprinig源码解析

前言 Spring 框架是 Java 企业级开发的基石&#xff0c;其源码设计体现了模块化、扩展性和灵活性。以下从 IoC 容器、AOP 实现、核心模块和关键设计模式四个角度对 Spring 源码进行深度解析&#xff0c;帮助理解其底层机制。即使Spring会使用的人见得就能使用。 一、IoC 容器源…...

ComfyUI流程图生图原理详解

一、引言 ComfyUI 是一款功能强大的工具&#xff0c;在图像生成等领域有着广泛应用。本文补充一点ComfyUI 的安装与配置过程遇到的问题&#xff0c;并深入剖析图生图过程及相关参数&#xff0c;帮助读者快速入门并深入理解其原理。 二、ComfyUI 的安装与配置中遇到的问题 &a…...

使用右侧值现象来处理一个word导入登记表的需求

需求也简单&#xff0c;导word文件用户登记表&#xff0c;有各部门的十几个版本&#xff08;为什么这么多&#xff1f;不知道&#xff09;。这里说下谈下我的一些代码做法&#xff1a; 需求分析&#xff1a; 如果能解决java字段和各项填的值怎么配对的问题&#xff0c;那么就…...

《open3d pyqt》Alpha重建

《open3d pyqt》Alpha重建 一、效果展示二、qt设置2.1 主界面添加动作2.2 dialog 界面、布局如下:三、核心代码一、效果展示 二、qt设置 2.1 主界面添加动作 2.2 dialog 界面、布局如下: 并生成py文件,参考前述章节 三、核心代码 main.py文件增加 from Su...

深度解析HTTP/HTTPS协议:从原理到实践

深入浅出HTTP/HTTPS协议&#xff1a;从原理到实践 前言 在当今互联网世界中&#xff0c;HTTP和HTTPS协议如同空气般存在于每个网页请求的背后。作为开发者或技术爱好者&#xff0c;理解这些基础协议至关重要。本文将用六大板块&#xff0c;配合原理示意图和实操案例&#xff0…...

数据结构:顺序表(Sequence List)及其实现

什么是顺序表&#xff1f; 顺序表是一种最简单的数据结构&#xff0c;它就像一排连续的小房子&#xff0c;每个房子里都住着一个数据元素。这些房子是按顺序排列的&#xff0c;每个房子都有一个门牌号&#xff08;下标&#xff09;&#xff0c;我们可以通过门牌号快速找到对应…...

小程序canvas2d实现横版全屏和竖版逐字的签名组件(字帖式米字格签名组件)

文章标题 01 功能说明02 效果预览2.1 横版2.2 竖版 03 使用方式04 横向签名组件源码4.1 html 代码4.2 业务 Js4.3 样式 Css 05 竖向签名组件源码5.1 布局 Html5.2 业务 Js5.3 样式 Css 01 功能说明 技术栈&#xff1a;uniapp、vue、canvas 2d 需求&#xff1a; 实现横版的全…...

MoE演变过程

MoE演变过程 1 MoE1.1 BasicMoE1.2 SparseMoE1.2.1 实现 1.3 Shared Expert SparseMoE 1 MoE 参考&#xff1a;https://huggingface.co/blog/zh/moe 1.1 BasicMoE 用router给出各专家的权重&#xff0c;然后让输入过每一个专家&#xff0c;然后做加权求和。 1.2 SparseMoE …...

【Leetcode 热题 100】1287. 有序数组中出现次数超过25%的元素

问题背景 给你一个非递减的 有序 整数数组&#xff0c;已知这个数组中恰好有一个整数&#xff0c;它的出现次数超过数组元素总数的 25 % 25\% 25%。 请你找到并返回这个整数。 数据约束 1 ≤ a r r . l e n g t h ≤ 1 0 4 1 \le arr.length \le 10 ^ 4 1≤arr.length≤104 0…...

ruby 的安装

在51cto搜索的资料 ruby on rails的安装 http://developer.51cto.com/art/200906/129669.htm http://developer.51cto.com/art/200912/169391.htm http://developer.51cto.com/art/200908/147276.htm 史上最完整的ruby&#xff0c;rails环境架设配置&#xff08;Apachefast…...

【java】List<String> fruits = new ArrayList<>(); 这一句是什么

1. 代码分解 java Copy List<String> fruits new ArrayList<>(); List<String>&#xff1a; List 是 Java 中的一个接口&#xff0c;表示一个有序的集合&#xff08;可以重复元素&#xff09;。 <String> 是泛型&#xff0c;表示这个列表中的元素…...

通俗诠释 DeepSeek-V3 模型的 “671B” ,“37B”与 “128K”,用生活比喻帮你理解模型的秘密!

欢迎来到涛涛聊AI。 在DeepSeek-V3模型的参数描述中&#xff0c;你可能会看到类似“671B 37B 128K”这样的标记。这些字母和数字的组合看起来像密码&#xff0c;但其实它们揭示了模型的“大脑容量”和“工作方式”。我们用日常生活的比喻来解释&#xff1a; 一、数字含义&…...

【鸿蒙Next】优秀鸿蒙博客集锦

鸿蒙基础开发&#xff1a;多文件压缩上传及断点续传_鸿蒙 断点续传-CSDN博客...

【实战项目】BP神经网络识别人脸朝向----MATLAB实现

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…...

C++线程安全函数

在 C 中&#xff0c;线程安全的函数是指在多线程环境下可以安全调用&#xff0c;不会导致数据竞争或其他并发问题的函数。C 标准库提供了许多线程安全的函数&#xff0c;同时也要求开发者在使用自定义函数时确保线程安全。以下是一些常见的线程安全函数和实现线程安全的方法&am…...

Java中的分布式(概念说明)

1. 分布式的基本概念 1.1 什么是分布式系统&#xff1f; 分布式系统&#xff08;Distributed System&#xff09;&#xff1a;由多台服务器&#xff08;或节点&#xff09;协同工作&#xff0c;对外提供一个整体服务。不同节点之间通过网络通信来协同处理请求或共享数据&…...

【1.8w字深入解析】从依赖地狱到依赖天堂:pnpm 如何革新前端包管理?

目录 前言npm 的诞生与发展嵌套依赖模型存在的问题npm3架构与yarnYarn 的诞生与局限Yarn 的诞生背景Yarn 仍然存在的问题 何为幽灵依赖依赖结构的不确定性pnpm王牌登场 -- 网状平铺结构安装包速度快依赖管理软链接 和 硬链接 机制 幽灵依赖产生的根本原因包管理工具的依赖解析机…...

【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑤】

ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase05 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月17日 关键词&#xff1a;UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-005测试用例 用例ID测试场景验证要点参考条款预期结果TC…...

137,【4】 buuctf web [SCTF2019]Flag Shop

进入靶场 都点击看看 发现点击work会增加&#xffe5; 但肯定不能一直点下去 抓包看看 这看起来是一个 JWT&#xff08;JSON Web Token&#xff09;字符串。JWT 通常由三部分组成&#xff0c;通过点&#xff08;.&#xff09;分隔&#xff0c;分别是头部&#xff08;Header&…...

Node.js 异步并发控制:`p-map` 和 `p-limit` 的使用与对比

在 Node.js 中&#xff0c;处理异步任务是开发中非常常见的需求。无论是批量处理数据、调用外部 API&#xff0c;还是操作文件系统&#xff0c;我们经常需要对多个异步任务进行管理。然而&#xff0c;当任务数量较多时&#xff0c;如果不加以控制&#xff0c;并发可能会导致性能…...

【c++】c++内存管理

目录 c和c的内存分布回顾C语言动态管理内存的方式malloccallocreallocfree C动态管理内存的方式new和deleteoperator new和operator delete定位new c和c的内存分布 回顾C语言动态管理内存的方式 malloc void* malloc (size_t size);malloc可以在堆上开辟指定内存的空间&#…...

EtherNet/IP转Modbus TCP:新能源风电监控与分析实用案例

EtherNet/IP转Modbus TCP&#xff1a;新能源风电监控与分析实用案例 一、案例背景 在某新能源汽车电池生产线上&#xff0c;需要将采用EtherNet/IP协议的电池检测设备与采用ProfiNet协议的生产线控制系统进行集成&#xff0c;以实现对电池生产过程的全面监控和数据采集。 二、…...

伪装目标检测(Camouflaged Object Detection, COD)教程

1. 引言 伪装目标检测&#xff08;Camouflaged Object Detection, COD&#xff09;是一项计算机视觉任务&#xff0c;旨在识别和分割背景中难以察觉的目标&#xff0c;如动物伪装、隐形物体检测等。由于伪装目标通常与背景高度相似&#xff0c;这项任务比传统的目标检测更具挑…...

烧烤炉出口亚马逊欧盟站CE认证EN1860安全标准

什么是欧盟CE认证&#xff1a; 在欧盟市场“CE”标志属强制性认证标志&#xff0c;不论是欧盟内部企业生产的产品&#xff0c;还是其他国家生产的产品&#xff0c;要想在欧盟市场上自由流通&#xff0c;就必须加贴“CE”标志&#xff0c;以表明产品符合欧盟《技术协调与标准化新…...

动态DNS神器nip.io使用指南:快速实现域名与IP的动态映射--告别配置本地hosts

动态DNS神器nip.io使用指南&#xff1a;快速实现域名与IP的动态映射--告别配置本地hosts 一、项目简介二、快速入门三、进阶配置四、典型应用场景 本文基于开源项目 v1.2.1版本撰写&#xff0c;适用于开发测试、CI/CD等场景 一、项目简介 nip.io 是由Exentrique Solutions开发…...

人工智能 - 机器学习、深度学习、强化学习是人工智能领域的理论基础和方法论

机器学习、深度学习、强化学习是人工智能领域的三大核心方向,各自具有独特的理论基础和方法论。以下是它们的核心理论知识总结: 一、机器学习(Machine Learning, ML) 1. 基础概念 目标:通过数据驱动的方式,让机器从经验中学习规律,完成预测、分类或决策任务。 核心范式…...

数字电路-基础逻辑门实验

基础逻辑门是数字电路设计的核心元件&#xff0c;它们执行的是基本的逻辑运算。通过这些基本运算&#xff0c;可以构建出更为复杂的逻辑功能。常见的基础逻辑门包括与门&#xff08;AND&#xff09;、或门&#xff08;OR&#xff09;、非门&#xff08;NOT&#xff09;、异或门…...

国产编辑器EverEdit - 如虎添翼的功能:快速选择

1 快速选择 1.1 应用场景 快速选择适用于批量选择和修改的场景&#xff0c;比如&#xff1a;变量改名。 1.2 使用方法 1.2.1 逐项快速选择 将光标放置在单词前或单词中&#xff0c;选择主菜单查找 -> 快速选择 -> 快速选择或使用快捷键Ctrl D 注&#xff1a;光标放…...