在 Java 开发领域,Spring 框架占据着举足轻重的地位,但它复杂的配置曾让不少开发者望而却步。SpringBoot 的出现,如同为 Spring 框架装上了 “加速器”,以 “约定大于配置” 的理念简化了开发流程。本文将从环境准备、Maven 配置入手,一步步带大家创建第一个 SpringBoot 项目并实现 HelloWorld 输出,同时讲解常见问题排查方法,助力快速上手 SpringBoot。

一、Maven 详解:项目管理的 “好帮手”

在 SpringBoot 开发中,Maven 负责项目构建与依赖管理,是不可或缺的工具。

1.1 认识 Maven

Maven 是基于 项目对象模型(POM) 的项目管理工具,官方定义为 “软件项目管理与理解工具”。用大白话讲,它能通过 pom.xml 文件自动获取项目所需的 Jar 包,无需手动下载和添加,极大减少了开发中的繁琐操作。

1.2 为什么要学 Maven?

核心原因就在于 简单、高效、少出错,主要体现在两大功能:

  1. 项目构建:提供跨平台(Linux、Windows、MacOS)的标准化构建流程,支持编译、测试、打包、发布等操作,只需点击对应命令(如 package)即可完成,无需重复手动操作。
  2. 依赖管理:通过配置依赖坐标,自动下载并管理 Jar 包,还能解决依赖冲突,避免手动添加 Jar 包时遗漏或版本不兼容的问题。

1.3 快速创建 Maven 项目

IDEA 已集成 Maven,无需额外安装,创建步骤如下:

  1. 打开 IDEA,选择 File -> New -> Project
  2. 在弹出的窗口中,选择 “Maven Archetype”,配置项目信息:
    • Project Name:项目名称(如 maven-demo
    • Location:项目保存路径(建议无中文,如 D:\Bit\code
    • JDK:选择 1.8(需提前安装配置)
  3. 点击 “Create”,完成项目创建。

创建后的 Maven 项目结构如下:

maven-demo
├── .idea          # IDEA 配置文件
├── src
│   ├── main       # 主代码目录
│   │   ├── java   # Java 源代码
│   │   └── resources  # 资源文件
│   └── test       # 测试代码目录
└── pom.xml        # Maven 核心配置文件

1.4 Maven 核心功能实战

1.4.1 项目构建:一键完成打包

Maven 的 “Lifecycle” 面板提供了标准化构建命令,常用命令及功能如下:

命令功能描述
clean清理项目编译生成的文件(如 target 目录)
compile编译 Java 源代码,生成 class 文件
test执行测试代码
package将项目打包为 Jar 包或 War 包(默认生成 Jar 包,存放在 target 目录下)

以打包为例,点击 Lifecycle 中的 package 命令,控制台输出 “BUILD SUCCESS” 即表示打包成功,在 target 目录下可找到生成的 Jar 包(如 maven-demo-1.0-SNAPSHOT.jar)。

  • Jar 包:存放编译后的 class 文件,可引入其他项目使用,或通过 java -jar 命令直接执行(可执行 Jar 包)。
  • War 包:用于 Web 项目,包含项目所有资源,通常部署到 Web 服务器(如 Tomcat)。
1.4.2 依赖管理:自动引入 Jar 包

Maven 通过 pom.xml 中的 <dependencies> 标签管理依赖,只需配置 Jar 包的 “坐标”(groupIdartifactIdversion),即可自动下载并引入项目。

示例:引入 MySQL 驱动依赖

  1. 在 pom.xml 的 <dependencies> 标签内添加以下配置:
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version>
</dependency>
  1. 点击 IDEA 右侧 Maven 面板的 “Reload All Maven Projects” 按钮,刷新依赖。
  2. 刷新完成后,在 “External Libraries” 中可看到 mysql-connector-java:8.0.30 依赖,表明引入成功。
1.4.3 依赖传递与排除
  • 依赖传递:若 A 依赖 B,B 依赖 C,Maven 会自动将 C 作为 A 的间接依赖引入,无需手动配置。例如:项目引入 spring-core(直接依赖),Maven 会自动引入其依赖的 spring-jcl(间接依赖)。
  • 依赖排除:若不需要间接依赖,可通过 <exclusions> 标签排除。例如:排除 spring-core 依赖的 spring-jcl
<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>6.0.6</version><!-- 排除依赖 --><exclusions><exclusion><artifactId>spring-jcl</artifactId><groupId>org.springframework</groupId></exclusion></exclusions>
</dependency>
1.4.4 依赖冲突解决:Maven Help 插件

当项目依赖存在版本冲突时(如 A 依赖 X1.0,B 依赖 X2.0),可使用 Maven Help 插件 排查:

  1. 安装插件:File -> Settings -> Plugins,搜索 “Maven Help”,点击 “Install” 并重启 IDEA。
  2. 查看依赖树:打开 pom.xml,点击底部 “Dependency Analyzer”,选择 “All Dependencies as Tree”,可直观看到依赖关系及冲突项(标红显示)。
  3. 解决冲突:Maven 默认采用 “最短路径优先” 原则选择版本,也可手动指定版本覆盖冲突。

1.5 Maven 仓库:Jar 包的 “存储库”

Maven 通过 “仓库” 存储 Jar 包,分为 本地仓库 和 远程仓库 两大类。

1.5.1 本地仓库

本地仓库是电脑上的一个目录(默认路径:C:\Users\用户名\.m2\repository),用于缓存下载的 Jar 包。当项目引入依赖时,Maven 优先从本地仓库查找,若存在则直接使用,不存在则从远程仓库下载并缓存到本地。

可通过 IDEA 查看 / 修改本地仓库路径:File -> Settings -> Build, Execution, Deployment -> Build Tools -> Maven,在 “Local repository” 中配置。

1.5.2 远程仓库
  • 中央仓库:Maven 内置的远程仓库(地址:Central Repository:),由 Maven 团队维护,全球唯一,包含几乎所有开源 Jar 包。
  • 私服:企业或团队搭建的私有仓库,用于存储内部 Jar 包或缓存中央仓库资源。依赖下载顺序变为:本地仓库 → 私服 → 中央仓库。
1.5.3 查找 Jar 包坐标

若需获取 Jar 包的坐标,可通过 MvnRepository 网站查询:

  1. 访问网站,搜索 Jar 包名称(如 “mysql-connector-java”)。
  2. 选择对应版本(如 8.0.30)。
  3. 复制页面中的 Maven 依赖配置,粘贴到 pom.xml 即可。

1.6 配置 Maven 国内源:加速下载

中央仓库在国外,下载速度较慢,建议配置 阿里云国内源:

  1. 打开 Maven 配置文件(路径:D:\Maven\.m2\settings.xml,若无则新建)。
  2. 在 <mirrors> 标签内添加以下配置:
<mirror><id>aliyunmaven</id><mirrorOf>central</mirrorOf><name>阿里云公共仓库</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

    3. 配置新项目生效:File -> New Projects Setup -> Settings for New Projects,确认 Maven 配置文件路径指向修改后的 settings.xml

二、第一个 SpringBoot 项目:HelloWorld 实战

SpringBoot 是 Spring 框架的 “脚手架”,旨在简化 Spring 开发。下面将通过 IDEA 创建 SpringBoot 项目,并实现浏览器访问输出 HelloWorld。

2.1 认识 SpringBoot

SpringBoot 的核心优势的是 简化配置、快速开发,主要特点包括:

  • 内置 Tomcat、Jetty 等 Web 服务器,无需手动配置。
  • 提供 “启动器”(Starter)依赖,一键集成常用框架(如 spring-boot-starter-web 集成 Web 开发所需依赖)。
  • 支持注解配置,无需繁琐的 XML 文件。
  • 自带监控功能,便于项目运维。

2.2 创建 SpringBoot 项目(IDEA 社区版)

IDEA 社区版需先安装 Spring Boot Helper 插件(专业版已集成,无需安装):

2.2.1 安装 Spring Boot Helper 插件
  1. 下载插件:访问 插件官网,选择与 IDEA 版本匹配的免费版本(如 IDEA 2022.1.4 对应插件版本 2022.1.2)。
  2. 本地安装:File -> Settings -> Plugins -> Install Plugin from Disk,选择下载的插件文件,重启 IDEA。
  3. 验证:重启后,插件名称变为 “Spring Initializr and Assistant”,表明安装成功(不要点击 “Update”,避免升级到付费版)。
2.2.2 创建 SpringBoot 项目
  1. 打开 IDEA,选择 File -> New -> Project,选择 “Spring Initializr”。
  2. 配置项目元数据(Project Metadata):
    • Group Id:组织 ID(如 com.example
    • Artifact Id:项目 ID(如 demo
    • Java Version:选择 17(SpringBoot 3.X 需 JDK 17,3.X 以下用 JDK 8)
    • Packaging:选择 “Jar”
  3. 选择依赖:在 “Dependencies” 中搜索 “Spring Web” 并勾选(用于 Web 开发)。
  4. 配置项目路径:设置项目名称(如 demo)和保存路径(无中文),点击 “Create” 完成创建。

2.3 项目结构解析

SpringBoot 项目的核心目录结构如下:

demo
├── .idea          # IDEA 配置文件
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com.example.demo
│   │   │       └── DemoApplication.java  # 项目启动类(核心)
│   │   └── resources
│   │       ├── static        # 静态资源(JS、CSS、HTML 等)
│   │       ├── templates     # 动态模板(JSP、Thymeleaf 等)
│   │       └── application.properties  # 配置文件(如端口、数据库连接)
│   └── test       # 测试代码目录
└── pom.xml        # Maven 配置文件
关键文件说明
  • DemoApplication.java:项目启动类,类上的 @SpringBootApplication 注解是 SpringBoot 的核心注解,表明该类是启动类。
  • pom.xml:核心依赖包括 spring-boot-starter-web(Web 开发启动器)和 spring-boot-starter-test(测试启动器),依赖版本由父工程 spring-boot-starter-parent 统一管理,无需手动指定。

2.4 实现 HelloWorld 接口

  1. 在 com.example.demo 包下创建 UserController 类:
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController  // 表明该类是 REST 接口控制器,返回 JSON/字符串
public class UserController {// 配置请求路径:/sayHi@RequestMapping("/sayHi")public String sayHi() {return "hello, SpringBoot!";  // 接口返回值}
}
  1. 启动项目:运行 DemoApplication.java 的 main 方法,控制台输出 “Started DemoApplication in X seconds”,表明项目启动成功(内置 Tomcat 默认端口为 8080)。

  2. 访问接口:打开浏览器,输入 URL http://127.0.0.1:8080/sayHi,页面显示 “hello, SpringBoot!”,说明接口调用成功。

2.5 常见访问错误排查

在开发中,可能会遇到以下访问错误,需针对性排查:

2.5.1 404 错误(资源不存在)
  • 原因:URL 路径错误、注解配置错误。
  • 示例 1:URL 拼写错误(如 http://127.0.0.1:8080/sayHi1,正确路径是 /sayHi)。
  • 示例 2:注解错误(用 @Controller 代替 @RestController@Controller 需配合 @ResponseBody 才能返回字符串,否则会查找模板文件导致 404)。
  • 解决:检查 URL 与 @RequestMapping 配置是否一致,确认控制器注解正确。
2.5.2 500 错误(服务器内部错误)
  • 原因:代码逻辑错误(如空指针、除数为 0)。
  • 示例:接口方法中写 int res = 10/0,导致算术异常。
  • 解决:查看 IDEA 控制台的异常日志,定位错误代码行(如 “UserController.java:5”),修复逻辑错误。
2.5.3 无法访问网站(连接拒绝)
  • 原因:Tomcat 启动失败、IP / 端口错误。
  • 示例:控制台无 “Tomcat started on port (s): 8080” 日志,或端口被占用。
  • 解决:
    1. 查看控制台错误日志(如端口被占用,提示 “Address already in use”)。
    2. 若端口被占用,在 application.properties 中修改端口:server.port=8081,重启项目后访问 http://127.0.0.1:8081/sayHi

三、总结

本文从环境准备、Maven 配置到 SpringBoot 项目实战,完整覆盖了 SpringBoot 快速上手的核心流程。重点总结如下:

  1. Maven 是基础:掌握 Maven 的依赖管理、项目构建和国内源配置,能大幅提升开发效率。
  2. SpringBoot 简化开发:通过 “启动器” 依赖和内置 Web 服务器,无需复杂配置即可快速开发 Web 项目。
  3. 错误排查是关键:遇到 404、500 等错误时,需结合 URL 路径、注解配置和控制台日志定位问题,培养调试思维。

SpringBoot 的学习是一个循序渐进的过程,后续可深入学习配置文件、数据库集成、RESTful 接口设计等内容,逐步掌握企业级开发技能。

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

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

相关文章

图、最小生成树与最短路径

目录 并查集 并查集实现 图 概念 图的存储结构 邻接矩阵 邻接表 无向图 有向图 图的遍历 广度优先遍历 深度优先遍历 最小生成树 Kruskal算法&#xff08;克鲁斯卡尔算法&#xff09; Prim算法&#xff08;普利姆算法&#xff09; 最短路径 单源最短路径--Dij…

互联网电商新生态:开源AI智能名片、链动2+1模式与S2B2C商城小程序的融合赋能

摘要&#xff1a;本文聚焦互联网电商领域&#xff0c;探讨在当下直播电商蓬勃发展的背景下&#xff0c;开源AI智能名片、链动21模式以及S2B2C商城小程序如何相互融合&#xff0c;为创业者、企业和淘宝主播IP等电商参与者带来新的发展机遇。通过分析各要素的特点与优势&#xff…

企业车辆|基于SprinBoot+vue的企业车辆管理系统(源码+数据库+文档)

企业车辆管理系统 基于SprinBootvue的企业车辆管理系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员模块实现 驾驶员模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博…

自学嵌入式第二十五天:数据结构-队列、树

一、队列队列是只允许一段进行插入&#xff0c;另一端进行删除操作的线性表&#xff1b;允许插入的一端叫队尾&#xff0c;允许删除的一端叫对头&#xff1b;先进先出&#xff1b;用于解决速度不匹配&#xff08;例如一快一慢&#xff09;&#xff0c;做缓冲用&#xff1b;二、…

MySQL索引原理与优化全解析

1、MySQL索引是什么&#xff1f; 在关系数据库中&#xff0c;索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构&#xff0c;它是某个表中一列或若干列值的集合和相应的指向表中物理标志这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录&a…

模型对话状态管理方法详解

模型对话状态管理方法详解 目录 简介手动管理对话状态构建对话历史追加响应内容 API 支持的自动化对话状态管理使用 previous_response_id 链接话轮 Token 及上下文窗口管理上下文窗口定义与限制Token 计数与工具 安全与合规注意事项结语1. 简介 在多轮对话场景中&#xff0c;合…

GPT-5 上线风波深度复盘:从口碑两极到策略调整,OpenAI 的变与不变

摘要&#xff1a; 近日&#xff0c;备受瞩目的 GPT-5 正式上线&#xff0c;却意外地在社区引发了两极化争议。面对技术故障与用户质疑&#xff0c;OpenAI 迅速推出一系列补救措施。本文将深度复盘此次发布风波&#xff0c;解析其背后的技术挑战与应对策略&#xff0c;并探讨这一…

【Android】使用FragmentManager动态添加片段

三三要成为安卓糕手 上一篇文章&#xff0c;我们是在xml中静态添加fragment&#xff0c;但是一些修改或者其他事情是做不了的&#xff1b; 本章我们达成在java代码中灵活添加、删除、替换fragment操作 一&#xff1a;核心代码展示 简单做一个这种页面public class FragmentActi…

MiniOB环境部署开发(使用开源学堂)

整体思路&#xff1a; 1.使用开源学堂在线编程环境开发MiniOB编译环境 2.使用vscode进行代码调试和开发以及上传到仓库 MiniOB源码&#xff1a;https://github.com/oceanbase/miniob MiniOB文档&#xff1a;MiniOB 介绍 - MiniOB 数据库大赛官网&#xff1a;OceanBase 社区…

09_常用内置模块进阶

第9课&#xff1a;常用内置模块进阶 课程目标 深入学习Python常用内置模块掌握collections、itertools、functools等模块学习json、csv、pickle等数据处理模块 1. collections模块 1.1 Counter类 from collections import Counter# 统计元素出现次数 text "hello world p…

⚡ Ranger 基础命令与功能详解

&#x1f4cc; 1. Ranger简介 Ranger&#xff08;游侠&#xff09;是一款 Linux 专用的 指令式文件管理器&#xff0c;其操作风格类似 Vim&#xff0c;通过输入指令即可完成目录跳转、文件编辑、移动、复制等操作。 相比于 mc&#xff08;Midnight Commander&#xff09;&…

CUDA安装教程(包括cuDNN的教程)一个博客带你了解所有问题

前言 windows10 版本安装 CUDA &#xff0c;首先需要下载两个安装包 CUDA toolkit&#xff08;toolkit就是指工具包&#xff09;cuDNN 注&#xff1a;cuDNN 是用于配置深度学习使用 官方教程 CUDA&#xff1a;Installation Guide Windows :: CUDA Toolkit Documentation …

ArkTS 语言全方位解析:鸿蒙生态开发新选择

在鸿蒙生态蓬勃发展的当下&#xff0c;一款高效、健壮的开发语言成为开发者的迫切需求。ArkTS 语言应运而生&#xff0c;作为鸿蒙生态的核心应用开发语言&#xff0c;它在 TypeScript&#xff08;简称 TS&#xff09;基础上进行创新扩展&#xff0c;为开发者打造高性能、易维护…

JavaScript性能优化实战:从瓶颈识别到极致体验

文章目录JavaScript性能优化实战&#xff1a;从瓶颈识别到极致体验1. 引言&#xff1a;为什么JavaScript性能至关重要1.1 性能对用户体验的影响1.2 JavaScript性能瓶颈的多样性2. JavaScript内存管理优化2.1 JavaScript内存模型详解2.2 垃圾回收机制与优化策略2.3 内存分析实战…

批量归一化:不将参数上传到中心服务器,那服务器怎么进行聚合?

联邦批量归一化&#xff08;FedBN&#xff09; 是一种联邦学习客户端本地模型优化算法。它的核心思想是&#xff1a;在联邦学习的客户端本地训练过程中&#xff0c;保留并独立更新批量归一化层&#xff08;Batch Normalization, BN&#xff09;的参数&#xff0c;而不将这些参数…

Qt中使用MySQL数据库

一、MySQL 入门 核心概念 在 QT 中操作数据库,主要使用两个模块: QSqlDatabase:代表一个数据库连接。 QSqlQuery:用于执行 SQL 语句(如 SELECT, INSERT, UPDATE, DELETE)并处理结果。 环境准备 在编写代码之前,你需要确保系统已具备以下条件: 1. 安装 MySQL 从 M…

Android - 统一资源标识符 Uri

一、概念URI&#xff08;Uniform Resource Identifier&#xff09;统一资源标识符&#xff0c;用于标识资源的字符串&#xff08;如图片、网页、文件、应用等&#xff09;。1.1 与 URL 的区别URL&#xff08;统一资源定位符&#xff09;是 URI&#xff08;统一资源标识符&#…

开源 AR 眼镜怎么选?OpenGlass ,OSSG,cheApR 分析推荐

开源项目横评&#xff08;看完你会知道自己属于哪一类&#xff09; 1&#xff09;OpenGlass&#xff1a;最低成本跑通“能用的AI眼镜” 卖点&#xff1a;用不到$25的通用元件&#xff0c;把任意普通眼镜改造成“可黑客化”的智能眼镜&#xff1b;能录制、识别、翻译、记人等。…

RAGFlow (一) 开发环境搭建

本文介绍如何在Windows上进行RAGFlow开发环境搭建 一. 环境准备 前提条件 CPU ≥ 4 核内存 ≥ 16 GB磁盘 ≥ 50 GBDocker ≥ 24.0.0 & Docker Compose ≥ v2.26.1 安装Docker Desktop为wsl安装Ubuntu 1.启用 WSL2​​&#xff08;Windows Subsystem for Linux&#xff09…

k8sday13数据存储(1.5/2)

目录 二、高级核心存储 1、PV 1.1配置文件 ①、访问模式&#xff08;accessModes&#xff09; ②、回收策略&#xff08;persistentVolumeReclaimPolicy&#xff09; ③、存储类别 ④、状态&#xff08;Status&#xff09; 1.2创建测试 ①、准备NFS环境 ②、创建PV …