首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Spring Boot Maven快速上手:IntelliJ IDEA Ultimate从第一个 Spring Boot 到浏览器里那句 Hello World

Spring Boot Maven快速上手:IntelliJ IDEA Ultimate从第一个 Spring Boot 到浏览器里那句 Hello World

作者头像
程序视点
发布2026-05-08 11:07:01
发布2026-05-08 11:07:01
40
举报
文章被收录于专栏:程序小小事程序小小事

大家好,欢迎来到 程序视点!我是你们的老朋友.安戈。

前言

你有没有过这种瞬间:教程一步一步跟着做,结果别人三秒跑通,你三小时还在下载依赖、刷新 Maven、看 IDEA 右下角转圈圈...

然后你开始怀疑人生:是不是我不适合写 Java?

先别急。Java Web 这条路上,最劝退的往往不是代码,而是。今天这篇文章,我不跟你堆术语吓唬人,我们就做一件事:把 Maven 和 Spring Boot 这层窗户纸捅破,让你知道每一步到底在干嘛。至于那些“工具链 + 概念名”叠在一起的名词,了解即可,真用到再记,完全来得及。

先把“战场”准备好:IDE 怎么选才不心累 写 Java Web,IDE 很重要。社区版不是不行,但经常要你自己补一堆配置,Spring 相关体验也不如IntelliJ IDEA专业版顺手——时间成本会悄悄把你拖垮。

个人建议:优先用官方正版路径,把精力放在学习上。别把时间赌在“环境玄学”上,你值得更稳的起点。

如果需要优惠的IntelliJ IDEA激活,可以关注微信公众号【程序视点】,回复vip,了解最新优惠。

另外心态也要摆正:Java Web 里大部分概念先理解轮廓就行,不用一上来背定义。你会越写越熟,熟了自然就记住了。

Maven:它不是你老板,是你项目的“管家”

1.1 Maven 到底是啥?

一句话:Maven 是项目管理工具。它基于 POM(Project Object Model,项目对象模型),用一小段描述,把构建、依赖、文档这些琐事尽量标准化。

每个 Maven 工程根目录都有一个 pom.xml。你可以把它理解成项目的“总开关配置”:项目坐标、依赖、插件、信息……都往这里写。

再翻译得更人话一点:以前加 jar 像手工搬砖,Maven 像叫外卖——你把菜单(依赖坐标)写好,它去帮你取餐(下载依赖),再摆到你桌上(引入项目)。

Maven 的作用,归根结底就八个字:省事、提速、少踩坑。

1.2 Maven 最值钱的两件事:构建 + 依赖

(1)项目构建

你写完代码,还要编译、测试、打包、发布。改一次代码就跑一遍流程,纯手工会很烦。Maven 给你一套跨平台(Windows / Linux / macOS)都通用的命令体系,让“重复劳动”变得可控。

(2)依赖管理

你的项目会引用别人写好的构件(常见是 jar)。这些引用就叫依赖。

找依赖别瞎搜网盘,去可靠的依赖索引站或官方仓库页面查坐标(例如常用的 Maven 仓库检索站点:https://mvnrepository.com/)。把坐标写进 pom.xml,刷新,Maven 会按规则把它拉下来。

举个 MySQL 驱动的例子(版本号按你项目需要调整即可):

代码语言:javascript
复制
<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.33</version>
    </dependency>
</dependencies>

这里顺便把标签“人话化”一下:

dependencies:依赖的总容器(一般一个 pom.xml 里就这一份总管)。

dependency:一条依赖记录,可以有很多条。

groupId:组织/公司域,常见如 org、com 等分段习惯。

artifactId:项目构件名,像身份证里的“姓名”。

version:版本号,像“哪一届的你”。

依赖传递:为什么 Maven 让人轻松?

以前 A 依赖 B,B 依赖 C,你可能得把 B、C 以及 C 的朋友们全手动拷进来,链路一复杂就爆炸。

Maven 的逻辑很友好:你只声明直接依赖,它会按传递关系把该带来的间接依赖一起处理(当然,复杂项目里也可能带来新问题,下面就说)。

image-20240920221808006
image-20240920221808006
依赖冲突:Maven 也会“做选择题”

同一个 groupId + artifactId 一般最终只会落一个 version。如果两条路都引到了同一个构件但版本不同,Maven 会做依赖调解:

  • 路径最短优先:离你的项目更近的那条链路优先。
  • 路径一样时,声明顺序优先:谁先被声明,谁更占理。
  • 有时候你明明不想要某个间接依赖,也可以 排除(exclusion):主动断开某条传递链路(被排除的资源通常不用写版本)。
代码语言:javascript
复制
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.3.33</version>
    <exclusions>
        <exclusion>
            <artifactId>spring-jcl</artifactId>
            <groupId>org.springframework</groupId>
        </exclusion>
    </exclusions>
</dependency>

如果你觉得靠肉眼盯 pom.xml 太累,可以在 IDEA 里装 Maven Helper 这类插件,用可视化方式看依赖树、定位冲突——这不是炫技,是省命。

1.3 仓库:jar 到底从哪来?

你在 pom.xml 里写的:

代码语言:javascript
复制
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.30</version>
</dependency>

这叫坐标:groupId + artifactId + version 三个一起,才能唯一定位一个 jar(缺一不可)。

刷新之后,Maven 会按顺序去“仓库”找资源。仓库就是放 jar 的地方,分两大类:

本地仓库:你电脑上的一个目录,优先从这里拿。没有就去远程下,下完缓存到这里,下次就快。

远程仓库:又常见分中央仓库(Maven 内置的公共下载源,全球维护)、私服(公司/团队自建,常配合权限与加速)。

image-20240921141616805
image-20240921141616805
image-20240921142325214
image-20240921142325214

私服场景下,下载链路通常是:

  • 先看本地有没有
  • 没有就问私服
  • 私服没有再问中央
  • 中央有就一路缓存回来:中央 → 私服 → 本地 → 你的项目

第一个 Spring Boot:别被“脚手架”三个字吓到

2.1 Spring 与 Spring Boot:先懂关系,再下手

Spring 官方对 Spring 的定位,核心就一句话趋势:让 Java 开发更快、更简单、更安全。Spring 家族项目很多,Web、数据、云原生……生态很大。

Spring Boot 的出现,是为了简化 Spring 开发。你可以把它理解成 Spring 的脚手架:盖房子先搭架子,效率才上得去。Boot 帮你把很多“默认就能用”的事先铺好,让你先跑起来,再逐步深入。

2.2 创建项目:耐心点,第一次慢是正常的

用 IDEA 新建 Spring Boot 项目时,注意版本选择:尽量别选带 SNAPSHOT 的,那代表不稳定快照,今天能跑明天可能变。

image-20240921145834761
image-20240921145834761

第一次创建会下载很多东西,慢不是你没配好,是依赖世界在搬家。出现工程结构后,有报错就当场处理,别堆到后面——堆到最后你会收获一个“连你自己都解释不清”的神秘项目。

2.3 目录结构:先认识路,别急着背

你只要先抓住这几块就够:

image-20240921150853816
image-20240921150853816
  • src/main/java:业务代码
  • src/main/resources:配置与静态资源
  • src/test/java:测试代码
  • target:编译产物(像工厂的出货区)
  • pom.xml:Maven 总管
2.4 输出 Hello World:跑通一次,信心就回来了

在包路径下建一个 UserController(注解细节后面文章再拆也行,今天先跑通):

代码语言:javascript
复制
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";
    }
}

重启项目后访问:http://127.0.0.1:8080/hello

浏览器里看到 Hello World,这一刻的意义不只是输出字符串,而是:你的请求真的进到了你的代码里。

image-20240921151925000
image-20240921151925000

Web 服务器:你写的不是“网页魔法”,是“对话”

浏览器和服务器之间,主流用的是 HTTP 协议。Web 服务器的价值在于:把 HTTP 的细节封装掉,让你不用自己从字节流里抠协议(那真的很痛苦)。

常见 Web 服务器有 Apache、Nginx、IIS、Tomcat、JBoss 等。 而 Spring Boot 默认内置 Tomcat,所以你常常“啥也没配就能跑”,不是因为你天赋异禀,是 Boot 帮你把 Tomcat 揣兜里了。

Tomcat 默认端口 8080,所以你本地访问经常是 8080。

请求响应流程:把 URL 读成“地址 + 门牌 + 房间号”

你在浏览器输入:http://127.0.0.1:8080/hello,可以这么理解:

  • 127.0.0.1:找哪台机器(本机回环地址)
  • 8080:找这台机器上哪个进程在“开门迎客”(端口)
  • /hello:进门后要哪个资源(路径)
  • 服务器收到后:定位资源 → 找到处理逻辑 → 把结果返回浏览器。

你调试 Web,本质上就是在确认这三段有没有对齐。

总结:新手真正该学的,是“排错思路”

最开始学 Spring,很多问题看起来像代码问题,其实是 环境 + 依赖 + 端口 + 路径 的组合拳。安戈建议你同时练两件事:

  • 会写:先把最小闭环跑通(今天这篇就是)
  • 会查:把报错当成地图,而不是判决书

再给你三条很实用的 HTTP 状态码直觉:

4xx:更像“你找错门了”,优先检查 URL、路径、路由映射5xx:更像“屋里着火了”,看异常栈、Tomcat/应用日志连接失败:更像“店没开门”,优先确认服务是否真的启动、端口是否被占用、是否访问错地址

熟悉 HTTP 之后,你会突然发现:你不是在盲改代码,你是在跟系统对话。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序视点 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • Maven:它不是你老板,是你项目的“管家”
    • 1.1 Maven 到底是啥?
    • 1.2 Maven 最值钱的两件事:构建 + 依赖
    • 依赖传递:为什么 Maven 让人轻松?
    • 依赖冲突:Maven 也会“做选择题”
    • 1.3 仓库:jar 到底从哪来?
  • 第一个 Spring Boot:别被“脚手架”三个字吓到
    • 2.1 Spring 与 Spring Boot:先懂关系,再下手
    • 2.2 创建项目:耐心点,第一次慢是正常的
    • 2.3 目录结构:先认识路,别急着背
    • 2.4 输出 Hello World:跑通一次,信心就回来了
  • Web 服务器:你写的不是“网页魔法”,是“对话”
  • 总结:新手真正该学的,是“排错思路”
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档