SpringBoot Maven快速上手
文章目录一、Maven1.1 Maven 简介1.2 Maven 的核心功能1.2.1 项目构建1.2.2 依赖管理1.3 Maven 仓库1.3.1 本地仓库1.3.2 中央仓库1.3.3 私服二、第一个 SpringBoot 程序2.1 Spring Boot介绍2.2 Spring Boot 项目创建2.3 目录介绍2.4 输出 Hello world三、Web 服务器四、总结首先环境准备IDEA 专业版。社区版要弄很多东西版本配 spring 之类的IDEA 专业版可以网上找找破解版。在 Java Web 这里大部分概念都只要了解即可不用记。一、Maven这部分内容不涉及实战主要是一些重要概念的介绍。1.1 Maven 简介官方对于 Maven 的描述引用来自Maven 官网翻译过来就是Maven 是一个项目管理工具。基于 POM (Project Object Model项目对象模型的概念Maven 可以通过一小段描述信息来管理项目的构建报告和文档的项目管理工具软件。POM 简介每一个 Maven 工程都有一个pom.xml文件位于根目录中包含项目构建生命周期的详细信息。通过pom.xml文件我们可以定义项目的坐标、项目依赖、项目信息、插件信息等等配置。简单来说Maven 是一个项目管理工具通过 pom.xml 文件的配置获取 jar 包而不用手动去添加 jar 包。Maven 的作用一句话简单方便提高我们的开发效率减少我们的开发 Bug。1.2 Maven 的核心功能Maven 提供的功能非常多主要体现在下面两个方面。项目构建管理依赖1.2.1 项目构建Maven 提供了标准的跨平台(LinuxWindowsMacOS等)的自动化项目构建方式。当我们开发了一个项目之后代码需要经过编译测试打包发布等流程每次代码的修改都需要经过这些流程如果代码反复调试修改这个流程就需要反复进行就显得特别麻烦而 Maven 给我们提供了一套简单的命令来完成项目的构建。1.2.2 依赖管理如果使用 Maven 构建产生的构件例如 Jar 文件被其他的项目引用那么该构件就是其他项目的依赖。在下面的 Maven 中央仓库中你可以找到项目所需的依赖。Maven 中央仓库下面为导入 Mysql 依赖。dependencies dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.33/version /dependency /dependencies配置说明dependencies一个 pom.xml 文件中只能存在一个这样的标签是用来管理依赖的总标签。dependency包含在 dependencies 标签中可以有多个每一个表示项目的一个依赖。groupId: 定义了当前 Maven 项目隶属的组织或公司。groupId 一般分为多段通常情况下第一段为域第二段为公司名称。域又分为 org、com、cn 等其中 org 为非营利组织com 为商业组织cn 表示中国。artifactId定义了当前 Maven 项目的名称项目的唯一的标识符对应项目根目录的名称。version定义了 Maven 项目当前所处版本。依赖传递早期我们没有使用 maven 时向项目中添加依赖的 jar 包需要把所有的 jar 包都复制到项目工程下。比如 A 依赖 B。B 依赖 C。那么 A 项目引入 B 的同时也需要引入 C如果我们手动管理这个依赖这个过程就会比较麻烦我们需要知道每个库都依赖哪些库以及这些依赖之间的版本是如何关联的。使用 maven 的话就可以避免管理所需依赖的关系。我们只需要在 pom 文件中定义直接依赖就可以了由于 maven 的依赖具有传递性所以会自动把所依赖的其他 jar 包也一起导入。如上图项目 A 通过 Maven 引入 Jar A 时会自动引入 Jar B和 Jar C。Jar A 和项目 B 就是项目 A 的直接依赖。Jar B。Jar C 是间接依赖。依赖冲突对于 Maven 而言同一个 groupId 同一个 artifactId 下只能使用一个 version。若相同类型但版本不同的依赖存在于同一个 pom 文件只会引入后一个声明的依赖。项目的两个依赖同时引入了某个依赖如同上图的 Jar C 为了避免依赖重复Maven 只会选择其中的一个进行解析。 Maven 在遇到这种问题的时候会遵循路径最短优先和声明顺序优先两大原则。解决这个问题的过程也被称为Maven 依赖调解。路径最短优先根据上图来进行理解。依赖链路1项目 A - Jar A - Jar C 。dis 2依赖链路2项目 A - 项目 B - 项目 C - Jar C。dis 3在这种情况下就会采用依赖链路 1 的 Jar C 依赖。很容易能发现如果依赖链路的长度一样这该怎么办所以又引入声明顺序优先。声明顺序优先在依赖路径长度相等的前提下哪个依赖先被声明那么就使用其依赖。依赖排除当前阶段我们需要依赖的库并不多但随着项目的越来越复杂库之间的依赖关系也会变得越来越复杂。如上图中如果项目 A 不需要Jar B也可以通过排除依赖的方式来实现。依赖排除指主动断开依赖的资源。被排除的资源无需指定版本我们可以通过exclusion标签手动删除依赖。dependency groupIdorg.springframework/groupId artifactIdspring-core/artifactId version5.3.33/version !--排除依赖-- exclusions exclusion artifactIdspring-jcl/artifactId groupIdorg.springframework/groupId /exclusion /exclusions /dependency如果觉得上面依赖排除操作有点麻烦可以在 IDEA 上安装 Maven Help 插件1.3 Maven 仓库我们通过短短几行代码就把依赖 jar 包放在了项目里具体是如何做的呢dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.30/version /dependency这个代码我们称之为 “坐标”也就是唯一的。在 Maven 中根据 groupId、artifactId、version 的配置来唯一识别一个 jar 包缺一不可。当我们在 pom 文件中配置完依赖之后点击刷新Maven 会根据坐标的配置去仓库里寻找 Jar 包并把他下载下来添加到项目中。这个 Jar 包下载的地方就称为仓库。仓库用于存储资源管理各种 jar 包。Maven 仓库分为两大类本地仓库和远程仓库。其中远程仓库又分为中央仓库私服和其他公共库。1.3.1 本地仓库本地仓库自己计算机上的一个目录(用来存储 jar 包)当项目中引入对应依赖 jar 包后首先会查找本地仓库中是否有对应的 jar 包。如果有则在项目中直接引用。如果没有则去中央仓库中下载对应的 jar 包到本地仓库。本地仓库地址可以通过 Maven 配置查看1.3.2 中央仓库中央仓库maven 软件中内置一个远程仓库地址就是中央仓库服务于整个互联网。由 Maven 团队维护全球唯一。仓库地址中央仓库可以通过中央仓库网站来查询并下载。我们可以把自己写好的 Jar 包上传到中央仓库(具备一定的要求)也可以从中央仓库下载 Jar 包。1.3.3 私服私服一般由公司团队搭建的私有仓库。私服属于某个公司或者某个部门往往需要一定权限。有了私服之后Maven 依赖下载的顺序又发生了变化。当 Maven 需要下载资源的时候先从本地仓库获取本地仓库存在则直接返回。如果本地仓库没有就从私服请求私服存在该资源就直接返回。如果私服上不存在该资源则从中央仓库下载中央仓库不存在就报错了。如果中央仓库中存在就先缓存在私服上之后再缓存到本地仓库里再为 Maven 的下载请求提供服务。私服是很多人在使用的所以只需要第一个使用者下载一次就可以了。二、第一个 SpringBoot 程序2.1 Spring Boot介绍在学习 SpringBoot 之前我们先来认识一下 Spring。我们看下 Spring 官方(spring 官网)的介绍。可以看到Spring 让 Java 程序更加快速简单和安全。Spring 对于速度、简单性和生产力的关注使其成为世界上最流行的 Java 框架。Spring 官方提供了很多开源的项目覆盖范围从 Web 开发到大数据Spring 发展到了今天已经形成了自己的生态圈。我们在开发时也倾向于使用 Spring 官方提供的技术来解决对应的问题。Spring Boot 的诞生是为了简化 Spring 程序开发的。Spring Boot 翻译一下就是 Spring 脚手架什么是脚手架呢如下图所示盖房子的这个架子就是脚手架脚手架的作用是砌筑砖墙浇筑混凝土、方便墙面抹灰装饰和粉刷的简单来说就是使用脚手架可以更快速的盖房子。而 Spring Boot 就是 Spring 框架的脚手架它是为了快速开发 Spring 框架而诞生的。2.2 Spring Boot 项目创建New Project。按照下图红色框框选择名称什么的自己取不同版本的页面会有出路不过问题不大。按照下图配置点击创建即可。之所以不选择带 SNAPSHOT是因为这是非稳定版本可能会发生变化。出现下面这个页面就基本已经成功了不能有报错一定要即使处理。第一次创建 spring 项目时间要花比较久有很多东西需要下载。启动项目spring 一创建就可以启动在 SpringBootApplication 标识的类启动类中启动这个项目启动是不会自动结束的如果没有报错那么恭喜你成功创建了一个 spring 项目。2.3 目录介绍src/main/java: Java 源代码。src/main/resources为静态资源或配置文件。src/test/java测试代码源代码。target编译后的文件路径。pom.xmlmaven 配置文件。2.4 输出 Hello world在创建的项目包路径下创建 UserController 文件实现代码如下先实现至于注解是什么意思后面文章会给出。import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; RestController public class UserController { RequestMapping(/hello) public String hello(){ return Hello World; } }重新启动项目访问 127.0.0.1:8080/hello 最终效果如下三、Web 服务器浏览器和服务器两端进行数据交互使用的就是 HTTP 协议。前面我们已经学习了 HTTP 协议知道了 HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式。Web 服务器就是对 HTTP 协议进行封装程序员不需要直接对协议进行操作自己写代码去解析 http 协议规则)让 Web 开发更加便捷所以 Web 服务器也被称为 WWW 服务器HTTP 服务器主要功能是提供网上信息浏览服务。常见的 Web 服务器有Apache,NginxIISTomcatJboss等。SpringBoot 内置了 Tomcat 服务器无需配置即可直接运行。Tocmat 默认端口号是 8080所以我们程序访问时的端口号也是 8080。请求响应流程分析浏览器输入 URL 之后发起请求就和服务器之间建立了连接。浏览器输入网址 127.0.0.1:8080/hello通过 IP 地址 127.0.0.1 定位到网络上的一台计算机127.0.0.1 就是本机。通过端口号 8080 找到计算机上对应的进程也就是在本地计算机中找到正在运行的 8080 端口的程序。/hello 是请求资源位置资源对计算机而言资源就是数据。web资源通过网络可以访问到的资源。127.0.0.1:8080/hello 就是向本地计算机中的 8080 端口程序获取资源位置是 /hello 的数据。8080 端口程序在服务器找 /hello 位置的资源数据发给浏览器。服务器接收到浏览器发送的信息。在服务器上找到对应的资源。把资源发送给浏览器。四、总结最开始学习 Spring 的时候会遇到很多问题更多是环境相关的问题。我们不仅要学习 Spring 代码的基本写法更重要的是学习排查错误的思路。熟悉 HTTP 协议能让我们调试问题事半功倍。4xx 的状态码标识路径不存在往往需要检查 URL 是否正确。5xx 的状态码表示服务器出现错误往往需要观察页面提示的内容和 Tomcat 自身的日志观察是否存在报错。出现连接失败往往意味着服务没有正确启动也需要观察服务器的自身日志是否有错误提示。参考Maven JavaGuide结语其实写博客不仅仅是为了教大家同时这也有利于我巩固知识点和做一个学习的总结由于作者水平有限对文章有任何问题还请指出非常感谢。如果大家有所收获的话还请不要吝啬你们的点赞收藏和关注这可以激励我写出更加优秀的文章。

相关新闻

告别复制粘贴:如何用 ONLYOFFICE 实现企业文档批量自动化处理与生成

告别复制粘贴:如何用 ONLYOFFICE 实现企业文档批量自动化处理与生成

在企业日常运营中,我们经常会遇到“让人头秃”的文档生成任务:HR 部门每个月要手动替换几百份员工薪资确认单的姓名和金额;销售团队需要在几十份制式的项目合同中,逐一修改客户公司名称和报价明细;运维人员每周要从服务…

2026/5/17 9:31:49 阅读更多 →
Flutter 三方库 theme_extensions_builder_annotation 的鸿蒙化适配指南 - 掌控 UI 资产、精密 Theme 治理实战、鸿蒙级工程专家

Flutter 三方库 theme_extensions_builder_annotation 的鸿蒙化适配指南 - 掌控 UI 资产、精密 Theme 治理实战、鸿蒙级工程专家

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net Flutter 三方库 theme_extensions_builder_annotation 的鸿蒙化适配指南 - 掌控 UI 资产、精密 Theme 治理实战、鸿蒙级工程专家 在鸿蒙跨平台应用执行高级主题管理与多维 UI 资产指控&…

2026/5/17 9:31:49 阅读更多 →
主流公司技术职级划分及各职级核心要求(大厂+中小公司通用)

主流公司技术职级划分及各职级核心要求(大厂+中小公司通用)

主流公司技术职级划分及各职级核心要求(大厂中小公司通用) 当前国内主流公司(含阿里等大厂、各类中小公司)的技术线职级划分,遵循统一的进阶规律:从基础执行岗逐步过渡到“技术管理”双属性岗,最…

2026/7/3 12:46:30 阅读更多 →

最新新闻

AI十年演进路径:从边缘智能到可信AI的工程化落地

AI十年演进路径:从边缘智能到可信AI的工程化落地

1. 这不是预言,而是技术演进路径的推演:我们真正该关注的AI十年图景你点开这篇文章,大概率不是为了听一句“AI会改变世界”——这句话从2012年AlexNet横空出世那天起,就被重复了上万遍。我做AI工程落地和系统架构设计整整11年&…

2026/7/4 18:07:14 阅读更多 →
Spring Boot + MyBatis + Vue 全栈毕设实战:从零到部署的完整项目开发指南

Spring Boot + MyBatis + Vue 全栈毕设实战:从零到部署的完整项目开发指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 计算机专业的学生在完成毕业设计或课程设计时,常常面临一个核心矛盾:既要理解项目背后的技术原理&#xff0…

2026/7/4 18:07:14 阅读更多 →
从零实现大语言模型:Happy-LLM开源教程带你手写LLaMA2

从零实现大语言模型:Happy-LLM开源教程带你手写LLaMA2

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 最近在社区里看到很多开发者,尤其是刚接触AI大模型的朋友,普遍反映一个痛点:大模型相关的资料要…

2026/7/4 18:05:14 阅读更多 →
web安全-SSTI(服务器模板注入)

web安全-SSTI(服务器模板注入)

1. 核心概念与分类SSTI的本质是用户输入被作为模板内容直接拼接并渲染。根据结果可分为:有回显:注入的表达式结果直接显示在页面上。盲注/无回显:结果不显示,需通过DNS外带、时间延迟等方式判断。2. 常见模板引擎与测试Payload&am…

2026/7/4 18:03:13 阅读更多 →
AI运动APP站位预检功能设计与实现

AI运动APP站位预检功能设计与实现

1. 运动APP中的站位预检功能设计在开发AI运动类APP时,站位预检功能是提升用户体验的关键环节。这个功能的主要目的是在用户开始运动前,通过摄像头检测用户的站立位置、姿势角度等关键参数,确保用户处于最佳的运动起始状态。1.1 为什么需要站位…

2026/7/4 18:03:13 阅读更多 →
Web安全入门实战:从零挖掘SRC漏洞的标准化流程与高频漏洞解析

Web安全入门实战:从零挖掘SRC漏洞的标准化流程与高频漏洞解析

1. 项目概述:从零到一,挖到你的第一个SRC漏洞很多刚接触Web安全的朋友,心里都憋着一股劲,看着别人在漏洞响应平台(SRC)上提交漏洞、获得认可甚至奖金,自己却不知从何下手。网上的教程要么太散&a…

2026/7/4 18:01:13 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻