JavaEE进阶 ——【SpringBoot 快速上手】从环境搭建到HelloWorld实战

JavaEE进阶 ——【SpringBoot 快速上手】从环境搭建到HelloWorld实战

—JavaEE专栏—


一、学习目标与前置说明

1.1 核心目标

  • 理解Maven(项目对象模型)的核心原理,掌握国内源配置方法,解决依赖下载慢问题
  • 独立使用IDEA完成SpringBoot项目创建、配置与启动,成功实现HelloWorld接口开发
  • 掌握SpringBoot项目常见错误(404/500/连接失败)的排查思路与解决方案

1.2 学习资源准备

  • 开发工具:IDEA(社区版/专业版,版本要求见下文)
  • JDK环境:JDK 8(适配SpringBoot 2.X)或JDK 17(适配SpringBoot 3.X)
  • 参考文档:Maven官方文档、SpringBoot官方入门指南

二、开发环境准备与配置

2.1 IDEA版本要求与安装

IDEA作为主流Java开发工具,其版本对SpringBoot插件兼容性影响较大,具体要求如下表所示:

IDEA版本类型 支持版本范围 注意事项 卸载与重装建议
社区版(***munity) 2021.1 - 2022.1.4 必须在此区间,否则无法正常安装SpringBoot Helper插件 卸载时需删除注册表,避免残留文件影响新安装版本,参考IDEA彻底卸载教程
专业版(Ultimate) 无明确限制 已内置Spring Initializr功能,无需额外安装插件 直接通过官方卸载程序移除,重启电脑后重新安装即可

说明:确认版本是否在支持范围内,是后续插件安装与项目创建的基础

2.2 JDK环境配置验证

SpringBoot 2.X与3.X对JDK版本要求不同,需提前配置对应环境:

  1. JDK安装路径确认:右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,查看JAVA_HOME是否指向正确JDK目录(如JDK 17路径为D:\Program Files\Java\jdk-17.0.9
  2. 版本验证:打开CMD命令行,输入java -version,若输出如下内容则配置成功:
    java version "17.0.9" 2023-10-17 LTS
    Java(TM) SE Runtime Environment (build 17.0.9+9-LTS-219)
    Java HotSpot(TM) 64-Bit Server VM (build 17.0.9+9-LTS-219, mixed mode, sharing)
    
  3. IDEA中JDK配置:打开IDEA→「File」→「Project Structure」→「SDKs」,添加对应版本JDK,确保项目编译环境与JDK版本匹配

三、Maven深度解析与实战配置

3.1 什么是Maven?官方定义与通俗理解

  • 官方定义:Apache Maven是一款基于项目对象模型(Project Object Model, POM)的软件项目管理与理解工具,可通过一小段描述信息管理项目的构建、报告与文档(引用自Maven官方网站)
  • 通俗理解:Maven就像项目的“管家”,通过pom.xml文件(配置清单)自动完成jar包下载、版本管理与项目编译打包,替代传统手动复制jar包的繁琐操作,避免“jar包缺失”“版本冲突”等问题

3.2 Maven核心功能:项目构建与依赖管理

Maven的核心价值体现在两大功能上,具体说明与实战示例如下:

3.2.1 项目构建:标准化流程与自动化操作

Maven定义了一套标准的项目生命周期,包含清洁、编译、测试、打包、安装等阶段,开发者可通过IDEA界面或命令行快速执行:

生命周期阶段 对应命令 功能描述 实战操作(IDEA)
清洁(Clean) mvn clean 删除项目编译生成的target目录,清除历史构建结果 点击右侧「Maven」→「Lifecycle」→「clean」,双击执行
编译(***pile) mvn ***pile src/main/java下的Java源代码编译为class文件,输出到target/classes 双击「***pile」,执行成功后可在target目录看到编译结果
测试(Test) mvn test 执行src/test/java下的测试用例,生成测试报告 双击「test」,控制台会显示测试用例执行结果(成功/失败)
打包(Package) mvn package 将项目打包为jar包(普通Java项目)或war包(Web项目),输出到target目录 双击「package」,打包成功后在target下生成xxx-0.0.1-SNAPSHOT.jar
安装(Install) mvn install 将打包后的jar/war包安装到本地仓库,供其他项目依赖引用 双击「install」,安装成功后可在本地仓库找到对应jar包
3.2.2 依赖管理:自动下载与传递性依赖

Maven通过“坐标”(groupId、artifactId、version)唯一标识一个jar包,在pom.xml中配置依赖后,会自动下载并管理相关jar包,同时支持依赖传递:

  1. 依赖坐标结构
    <!-- 示例:MySQL JDBC驱动依赖 -->
    <dependencies>
        <dependency>
            <groupId>mysql</groupId> <!-- 组织ID:标识jar包的开发组织(如mysql公司) -->
            <artifactId>mysql-connector-java</artifactId> <!-- 项目ID:标识具体的项目(如MySQL驱动) -->
            <version>8.0.30</version> <!-- 版本号:指定jar包版本,避免版本冲突 -->
        </dependency>
    </dependencies>
    
  2. 依赖传递原理:当项目A依赖jar包B,而jar包B依赖jar包C时,Maven会自动下载B和C,无需手动配置C的依赖。例如:
    • 项目A配置Spring Web依赖(spring-boot-starter-web
    • Spring Web依赖Spring Core、Spring Context等jar包
    • Maven会自动下载所有相关依赖,无需手动配置

3.3 Maven仓库体系:本地、中央与私服

Maven的仓库用于存储jar包、插件等资源,分为三大类,其优先级与工作流程如下:

3.3.1 仓库分类与说明
仓库类型 存储位置 特点 作用
本地仓库(Local Repository) 本地计算机目录(默认:C:\Users\用户名\.m2\repository,可自定义) 私有的、仅本地项目可访问 缓存已下载的jar包,避免重复下载,提高依赖获取速度
中央仓库(Central Repository) Maven官方维护的远程仓库(地址:https://repo1.maven.org/maven2/) 公开的、全球唯一 存储全球大部分开源项目的jar包,当本地仓库无对应资源时自动从中央仓库下载
私服(Private Repository) 公司/团队内部搭建的远程仓库(如Nexus) 私有性、需权限访问 存储公司内部开发的jar包,共享内部资源,同时缓存中央仓库资源,提高团队开发效率
3.3.2 依赖查找流程

当Maven需要获取某个jar包时,会按照以下顺序查找:

  1. 优先查找本地仓库:若本地仓库已存在该jar包,直接引用,无需网络请求
  2. 本地仓库无则查找私服(若配置了私服):若私服存在该jar包,下载到本地仓库后引用
  3. 私服无则查找中央仓库:从中央仓库下载jar包,先缓存到私服(若配置),再缓存到本地仓库,最后引用
  4. 中央仓库无则报错:提示“依赖找不到”,需检查坐标配置是否正确

3.4 关键优化:Maven国内源配置(解决下载慢问题)

由于中央仓库位于国外,国内访问速度较慢,需配置阿里云国内源,步骤如下:

  1. 找到Maven配置文件(settings.xml)

    • 若使用IDEA集成的Maven,配置文件路径可通过「File」→「Settings」→「Build, Execution, Deployment」→「Build Tools」→「Maven」查看,示例路径为D:\Maven\.m2\settings.xml
    • 若该路径下无settings.xml文件,可从Maven安装目录的conf文件夹复制(如D:\apache-maven-3.8.1\conf\settings.xml)到上述路径
  2. 添加阿里云镜像配置
    settings.xml<mirrors>标签内添加如下内容:

    <mirrors>
        <!-- 阿里云Maven镜像 -->
        <mirror>
            <id>aliyunmaven</id>
            <mirrorOf>central</mirrorOf> <!-- 镜像中央仓库 -->
            <name>阿里云公共仓库</name>
            <url>https://maven.aliyun.***/repository/public</url> <!-- 阿里云仓库地址 -->
        </mirror>
        <!-- 若需其他仓库(如Spring仓库),可继续添加 -->
        <mirror>
            <id>aliyunmaven-spring</id>
            <mirrorOf>spring</mirrorOf>
            <name>阿里云Spring仓库</name>
            <url>https://maven.aliyun.***/repository/spring</url>
        </mirror>
    </mirrors>
    
  1. 验证配置是否生效
    • 新建Maven项目,配置一个依赖(如MySQL驱动)
    • 点击「Reload All Maven Projects」(刷新按钮)
    • 观察控制台日志,若出现“Downloading from aliyunmaven”,说明配置生效

3.5 依赖冲突解决:Maven Help插件实战

随着项目依赖增多,可能出现“同一jar包不同版本”的冲突问题,需借助Maven Help插件排查与解决:

  1. 安装Maven Help插件

    • 打开IDEA→「File」→「Settings」→「Plugins」→在搜索框输入“Maven Help”
    • 找到“Maven Helper”插件,点击「Install」,安装完成后重启IDEA
  2. 查看依赖树与冲突

    • 打开项目的pom.xml文件
    • 点击底部「Dependency Analyzer」标签
    • 选择「All Dependencies as Tree」,可查看所有依赖的层级关系;选择「Conflicts」,可筛选出存在冲突的依赖(红色标注)
  3. 解决冲突:排除依赖
    若发现spring-core依赖存在2.0.0和3.0.0两个版本,需排除低版本,配置如下:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <!-- 排除低版本的spring-core依赖 -->
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    安装好Maven Help插件后,点击Dependency Analyzer

四、SpringBoot项目实战:从创建到HelloWorld

4.1 什么是Spring?什么是SpringBoot?核心优势解析

在学习SpringBoot之前, 我们先来认识一下Spring
我们看下Spring官方的介绍

可以看到, Spring让Java程序更加快速, 简单和安全. Spring对于速度、简单性和生产力的关注使其成为世界上最流行的Java框架。Spring官方提供了很多开源的项目, 覆盖范围从Web开发到大数据, Spring发展到了今天, 已经形成了自己的生态圈. 我们在开发时, 也倾向于使用Spring官方提供的技术, 来解决对应的问题。

SpringBoot是Spring框架的“脚手架”,基于“约定大于配置”的设计思想,旨在简化Spring应用的开发流程,其核心优势如下:

核心优势 具体说明 对比传统Spring
简化配置 无需编写大量XML配置文件,通过注解与默认配置快速搭建项目 传统Spring需配置applicationContext.xmldispatcher-servlet.xml等,配置繁琐
内置Web服务器 集成Tomcat、Jetty等Web服务器,无需手动部署WAR包 传统Spring需将WAR包部署到外部Tomcat,步骤复杂
starter依赖 提供starter依赖(如spring-boot-starter-web),一键集成所需框架 传统Spring需手动配置多个依赖,易遗漏或版本冲突
自动配置 根据项目依赖自动配置Bean(如配置了spring-boot-starter-web,自动配置DispatcherServlet) 传统Spring需手动在XML中配置Bean,易出错
监控支持 集成Spring Boot Actuator,提供项目健康检查、指标监控等功能 传统Spring需手动集成第三方监控框架,开发成本高

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

IDEA社区版需安装Spring Boot Helper插件才能创建SpringBoot项目,具体步骤如下:

4.2.1 安装Spring Boot Helper插件
  1. 下载插件:访问Spring Boot Helper插件官网,选择与IDEA版本匹配的免费版(如IDEA 2022.1.4对应插件版本2022.1.2),点击「Download」下载插件压缩包
  2. 本地安装插件
    • 打开IDEA→「File」→「Settings」→「Plugins」→点击右上角「⚙️」→「Install Plugin from Disk…」
    • 选择下载的插件压缩包,点击「OK」,安装完成后重启IDEA
  3. 验证插件:重启IDEA后,打开「File」→「New」→「Project」,若能看到「Spring Initializr」选项,说明插件安装成功
4.2.2 创建SpringBoot项目
  1. 初始化项目

    • 「File」→「New」→「Project」→选择「Spring Initializr」→「Next」
    • 配置项目元数据(Project Metadata):
      配置项 示例值 说明
      Group ***.example 组织ID,通常为公司域名反转(如***.baidu)
      Artifact springboot-demo 项目ID,标识项目名称
      Version 0.0.1-SNAPSHOT 项目版本,SNAPSHOT表示快照版(开发中)
      Name springboot-demo 项目名称,与Artifact一致即可
      Package name ***.example.springbootdemo 项目包名,默认由Group+Artifact组成
      Language Java 开发语言,选择Java
      Build System Maven 构建工具,选择Maven
      Packaging Jar 打包方式,选择Jar(SpringBoot推荐)
      Java version 17 选择与本地JDK匹配的版本
    • 点击「Next」,进入依赖选择界面
  2. 选择依赖

    • 在「Dependencies」搜索框输入“Spring Web”,勾选「Spring Web」依赖(用于开发Web接口)
    • 点击「Next」,选择项目保存路径(如D:\Bit\code\springboot-demo),点击「Create」完成创建
  3. 等待依赖加载

    • 首次创建项目时,Maven会自动下载spring-boot-starter-web等依赖,需等待几分钟(若已配置国内源,速度会更快)
    • 若依赖加载失败,点击右侧「Maven」→「Reload All Maven Projects」刷新

4.3 SpringBoot项目目录结构解析

创建完成后,项目目录结构如下(标注核心文件与目录的作用):

springboot-demo/                # 项目根目录
├── .idea/                      # IDEA项目配置文件目录(无需手动修改)
├── src/                        # 源代码与资源文件目录
│   ├── main/                   # 主程序目录
│   │   ├── java/               # Java源代码目录
│   │   │   └── ***/
│   │   │       └── example/
│   │   │           └── springbootdemo/
│   │   │               └── SpringbootDemoApplication.java  # 项目启动类(核心)
│   │   └── resources/          # 资源配置文件目录
│   │       ├── static/         # 静态资源目录(存放JS、CSS、图片等)
│   │       ├── templates/      # 模板文件目录(存放Thymeleaf、Freemarker等动态模板)
│   │       └── application.properties  # 项目配置文件(核心,如端口配置、数据库配置)
│   └── test/                   # 测试程序目录
│       └── java/
│           └── ***/
│               └── example/
│                   └── springbootdemo/
│                       └── SpringbootDemoApplicationTests.java  # 测试类
├── target/                     # 编译与打包输出目录(自动生成)
├── .gitignore                  # Git版本控制忽略文件配置
├── pom.xml                     # Maven依赖配置文件(核心)
└── springboot-demo.iml         # IDEA项目模块配置文件(无需手动修改)

核心文件说明

  1. 启动类(SpringbootDemoApplication.java)

    package ***.example.springbootdemo;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication  // SpringBoot核心注解,标识为启动类
    public class SpringbootDemoApplication {
    
        public static void main(String[] args) {
            // 启动SpringBoot应用
            SpringApplication.run(SpringbootDemoApplication.class, args);
        }
    
    }
    
    • @SpringBootApplication:包含@Configuration(配置类)、@EnableAutoConfiguration(自动配置)、@***ponentScan(组件扫描)三个注解的功能,是SpringBoot项目的入口
    • SpringApplication.run():启动SpringBoot应用,加载自动配置与Bean
  2. 配置文件(application.properties)
    初始为空,可添加项目配置,如修改Tomcat默认端口:

    # 修改Tomcat默认端口为8081(默认8080)
    server.port=8081
    

4.4 实现HelloWorld接口:前后端交互实战

通过创建Controller类,实现一个简单的HTTP接口,浏览器访问后返回“Hello, SpringBoot!”:

4.4.1 创建Controller类
  1. ***.example.springbootdemo包下新建controller子包(用于存放控制器类)
  2. controller包下新建HelloController类,代码如下:
package ***.overthinker.springboot;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello(){
        return "hello Spring Boot~";
    }

}

4.4.2 启动项目并测试
  1. 启动项目

    • 找到SpringbootDemoApplication.java类,点击类左侧的「▶️」按钮(或右键→「Run」)
    • 观察控制台日志,若出现以下内容,说明项目启动成功:
      2024-05-20 15:30:00.123  INFO 12348 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8081 (http) with context path ''
      2024-05-20 15:30:00.135  INFO 12348 --- [           main] c.e.springbootdemo.SpringbootDemoApplication : Started SpringbootDemoApplication in 2.123 seconds (JVM running for 2.567)
      
  2. 浏览器访问测试

    • 打开浏览器,输入地址:http://127.0.0.1:8081/hello(注意端口与配置文件一致)
    • 若页面显示“hello Spring Boot~”,说明接口开发成功

五、SpringBoot项目常见问题排查与解决方案

5.1 404错误:资源不存在

5.1.1 错误现象

浏览器访问接口时,页面显示“Whitelabel Error Page”,状态码为404(Not Found),控制台无报错。

5.1.2 常见原因与解决方案
常见原因 解决方案 验证方法
URL路径错误(如/sayHi写成/sayhi/sayHi1 核对@RequestMapping注解的路径与浏览器访问路径是否完全一致(区分大小写) 修改浏览器URL为正确路径,如http://127.0.0.1:8081/sayHi
Controller类未被Spring扫描(如包路径错误) 确保Controller类所在包在启动类的子包下(如启动类在***.example.springbootdemo,Controller在***.example.springbootdemo.controller 在Controller类添加@RestController注解,重启项目后观察控制台是否有该类的初始化日志
注解使用错误(如用@Controller而非@RestController 若需返回字符串/JSON,使用@RestController;若需返回视图,使用@Controller+@ResponseBody @Controller改为@RestController,重启项目后重新访问

5.2 500错误:服务器内部错误

5.2.1 错误现象

浏览器访问接口时,页面显示“Whitelabel Error Page”,状态码为500(Internal Server Error),控制台有异常栈信息。

5.2.2 常见原因与解决方案
常见原因 解决方案 验证方法
代码逻辑异常(如除数为0、空指针异常) 查看控制台异常栈,定位错误代码行(异常信息中会显示“at ***.example…(类名.java:行号)”),修复逻辑错误 例如:若异常为“java.lang.ArithmeticException: / by zero”,则找到除数为0的代码,修改为合理逻辑
依赖版本冲突(如Spring Core版本不兼容) 使用Maven Help插件查看依赖冲突,排除低版本或不兼容的依赖 pom.xml的Dependency Analyzer标签页查看Conflicts,排除冲突依赖后重启项目
配置文件错误(如数据库配置错误) 检查application.properties中的配置项(如数据库URL、用户名、密码),确保配置正确 注释掉错误配置,重启项目,若能正常启动则说明配置项问题

5.3 无法访问网站:连接失败

5.3.1 错误现象

浏览器访问接口时,显示“无法访问此网站”或“ERR_CONNECTION_REFUSED”,控制台无项目启动成功日志。

5.3.2 常见原因与解决方案
常见原因 解决方案 验证方法
项目未启动成功(如端口被占用) 查看控制台错误日志,若提示“Port 8081 is already in use”(端口8081已被占用),则修改application.properties中的server.port为未占用端口(如8082) 修改端口后重启项目,观察控制台是否显示“Tomcat started on port(s): 8082 (http)”
Tomcat启动失败(如JDK版本不匹配) 确保项目使用的JDK版本与SpringBoot版本兼容(如SpringBoot 3.X需JDK 17+),在「Project Structure」中修改JDK版本 修改JDK版本后重启项目,若控制台无JDK相关报错则说明配置正确
防火墙/杀毒软件拦截 暂时关闭防火墙/杀毒软件,重新访问接口 关闭后若能正常访问,则在防火墙中添加项目进程或端口的允许规则

5.4 调试技巧:高效定位问题

  1. 查看控制台日志:SpringBoot启动日志会显示项目启动状态、端口号、异常信息等,是排查问题的首要工具(重点关注ERROR、WARN级别日志)
  2. 使用Fiddler抓包:Fiddler可捕获浏览器与服务器之间的HTTP请求与响应,帮助分析请求路径、参数、响应状态码等(下载地址:Fiddler官网)
  3. Debug调试:在Controller方法中添加断点(点击代码行号左侧,出现红色圆点),启动项目时选择「Debug」模式,访问接口后逐步执行代码,观察变量值变化
  4. 参考官方文档:遇到无法解决的问题时,查阅SpringBoot官方文档或SpringBoot官方FAQ,获取权威解决方案

六、总结与学习资源推荐

6.1 核心知识点总结

  1. Maven:掌握依赖管理、仓库体系、国内源配置与依赖冲突解决,是SpringBoot项目开发的基础
  2. SpringBoot:理解“约定大于配置”的设计思想,掌握项目创建、启动类与Controller开发,实现简单Web接口
  3. 问题排查:熟悉404/500/连接失败等常见错误的原因与解决方案,掌握日志分析、Debug调试等技巧

6.2 留言交流

若你在学习过程中遇到其他问题,或有好的学习经验分享,欢迎在评论区留言!也可以分享你的HelloWorld项目截图,一起交流进步~

转载请说明出处内容投诉
CSS教程网 » JavaEE进阶 ——【SpringBoot 快速上手】从环境搭建到HelloWorld实战

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买