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

Spring Boot 入门:5分钟搭建Hello World

你提供的内容是 Spring Boot 官方文档中的一节(3.4节),标题为 “Developing Your First Spring Boot Application”,即“开发你的第一个 Spring Boot 应用程序”。这一节通过一个简单的 “Hello World” Web 应用,带你一步步创建一个基于 Spring Boot 的项目,涵盖了从项目初始化、依赖管理、代码编写到打包运行的全过程。

下面我将逐段解析这段内容,帮助你理解其核心思想和技术要点,适合初学者或想系统了解 Spring Boot 工作原理的人。


🌱 一、总体目标:创建一个简单的 Web 应用

我们要做的就是一个最简单的 Web 程序:

  • 当访问 http://localhost:8080/ 时,返回 "Hello World!"
  • 使用 Maven 构建项目
  • 不依赖 IDE,手动编写 pom.xml 和 Java 代码
  • 最终打包成一个可执行的 JAR 文件(“fat jar”)

💡 这是一个典型的“入门示例”,但它背后展示了 Spring Boot 的几个关键特性:自动配置、起步依赖、内嵌服务器、可执行 JAR。


🔧 二、准备工作

文档建议先检查 Java 和 Maven 是否安装正确:

java -version
mvn -v

要求:

  • Java 8 或以上
  • Maven 3.3+(文中使用的是 3.5.4)

然后创建一个空目录作为项目根目录。


📦 三、创建 Maven 的 pom.xml 文件(3.4.1)

pom.xml 是 Maven 项目的配置文件,相当于项目的“配方”。

关键配置如下:

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version>
</parent>

spring-boot-starter-parent 的作用:

  1. 提供默认配置:比如编译版本(Java 8)、资源过滤、插件配置等。
  2. 依赖管理(Dependency Management):它已经预定义了常用库的版本号,这样你在引入其他 Spring Boot 组件时,可以省略版本号,避免版本冲突。

比如你加 spring-boot-starter-web,不需要写 <version>...</version>,父 POM 已经帮你管理了。


🚀 四、添加类路径依赖(3.4.2)

Spring Boot 提供了“Starter Dependencies”(起步依赖),简化依赖引入。

我们要开发 Web 应用,所以添加:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>

spring-boot-starter-web 包含了什么?

  • Spring MVC(用于构建 Web 接口)
  • 内嵌的 Tomcat 服务器(无需单独安装)
  • JSON 支持(Jackson)
  • 自动配置支持

你可以运行:

mvn dependency:tree

查看所有自动引入的依赖树,会发现多了上百个 JAR 包(包括 Spring 框架、Tomcat、日志等)。

💡 这就是“起步依赖”的威力:一句话引入一整套技术栈。


💻 五、编写 Java 代码(3.4.3)

创建文件:src/main/java/Example.java

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotation.*;@RestController
@EnableAutoConfiguration
public class Example {@RequestMapping("/")String home() {return "Hello World!";}public static void main(String[] args) {SpringApplication.run(Example.class, args);}
}

🔍 代码解析

1. @RestController
  • 是 Spring MVC 的注解。
  • 表示这个类是一个控制器,所有方法返回的内容直接作为 HTTP 响应体(不会跳转页面)。
  • 相当于 @Controller + @ResponseBody
2. @RequestMapping("/")
  • 将 HTTP 请求路径 / 映射到 home() 方法。
  • 所有 GET 请求访问根路径都会调用这个方法。
3. @EnableAutoConfiguration
  • 核心注解!告诉 Spring Boot 根据你添加的 jar 包自动配置项目
  • 因为你引入了 spring-boot-starter-web,它包含了 Spring MVC 和 Tomcat,所以 Spring Boot 自动:
    • 配置了一个嵌入式的 Tomcat 服务器
    • 启用了 Spring MVC
    • 设置了默认的 DispatcherServlet
    • 监听 8080 端口

✅ 这就是“约定优于配置”的体现:你不用写任何 XML 或配置类,Spring Boot 自动帮你搞定。

4. main 方法
  • 标准的 Java 入口。
  • SpringApplication.run(Example.class, args) 是 Spring Boot 的启动入口。
  • 它会:
    • 创建 Spring 容器(ApplicationContext)
    • 扫描组件
    • 启动内嵌 Web 服务器
    • 部署应用

▶️ 六、运行应用(3.4.4)

使用 Maven 插件运行:

mvn spring-boot:run

输出日志中会出现 Spring Boot 的 ASCII 艺术字和启动时间:

:: Spring Boot :: (v2.3.12.RELEASE)
Started Example in 2.222 seconds

打开浏览器访问:

http://localhost:8080

看到:

Hello World!

✅ 成功!


📦 七、打包成可执行 JAR(3.4.5)

Spring Boot 的一大优势是:可以打包成一个独立的 JAR 文件,包含所有依赖和内嵌服务器,直接用 java -jar 运行。

步骤:

  1. pom.xml 中添加插件:
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

spring-boot-starter-parent 已经默认配置了 repackage 目标,所以你只需要声明插件即可。

  1. 打包:
mvn package

生成两个文件:

  • target/myproject-0.0.1-SNAPSHOT.jar:可执行的“fat jar”
  • myproject-0.0.1-SNAPSHOT.jar.original:Maven 原始打包的 JAR(不含依赖)
  1. 运行:
java -jar target/myproject-0.0.1-SNAPSHOT.jar

同样能看到启动日志和 Web 服务。


🧠 八、关键概念总结

概念说明
Starter Dependencies简化依赖引入,如 spring-boot-starter-web 一键引入 Web 开发所需全部依赖
Auto-configuration根据 classpath 中的 jar 包自动配置 Spring 应用(如发现 Tomcat 和 Spring MVC,就自动配置 Web 环境)
Embedded Server内嵌 Tomcat/Jetty/Undertow,无需部署到外部服务器
Executable JAR打包成包含所有依赖的单一 JAR,便于部署和运行
SpringApplication.run()启动 Spring Boot 应用的核心方法
@SpringBootApplication(虽然本例没用,但实际常用)它 = @Configuration + @EnableAutoConfiguration + @ComponentScan

⚠️ 注意:这个例子使用了 @EnableAutoConfiguration,但在实际开发中,我们通常使用 @SpringBootApplication 注解,它包含了这个功能。


📚 九、下一步该学什么?(3.5 What to Read Next)

文档建议:

  1. 去 spring.io 查看更多“Getting Started”教程,比如:
    • 如何连接数据库?
    • 如何做安全认证?
    • 如何做 REST API?
  2. 阅读 “Using Spring Boot” 章节,深入了解配置、外部化属性、 Profiles、日志等。
  3. 查看 “Spring Boot Features” 文档,学习更多高级特性。

✅ 总结:这个例子教会了我们什么?

技术点学到了什么
项目构建使用 Maven 创建 Spring Boot 项目
依赖管理使用 Starter 简化依赖引入
自动配置Spring Boot 能根据依赖自动配置环境
快速开发几行代码就能启动一个 Web 服务
简化部署打包成可执行 JAR,直接 java -jar 运行

💡 小贴士:现代开发更推荐使用 Spring Initializr

文档也提到:

你可以直接访问 start.spring.io 自动生成项目骨架。

推荐做法:

  1. 打开 https://start.spring.io
  2. 选择 Maven、Java、Spring Boot 版本
  3. 填写 Group、Artifact
  4. 添加依赖:Web
  5. 点击 “Generate” 下载项目 ZIP
  6. 解压后直接导入 IDE 或运行

这样可以省去手动写 pom.xml 的麻烦。


🧩 补充:现代写法(推荐)

上面的例子用了较老的写法。现在更标准的主类写法是:

// 文件名: MyprojectApplication.java
package com.example.myproject;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@SpringBootApplication
@RestController
public class MyprojectApplication {@GetMapping("/")public String home() {return "Hello World!";}public static void main(String[] args) {SpringApplication.run(MyprojectApplication.class, args);}
}

✅ 使用 @SpringBootApplication 更标准,也支持组件扫描。


✅ 结语

这个 “Hello World” 示例虽然简单,但它浓缩了 Spring Boot 的四大核心优势

  1. 自动配置(Auto-configuration)
  2. 起步依赖(Starters)
  3. 内嵌服务器(Embedded Server)
  4. 可执行 JAR(Executable JAR)

掌握这个例子,你就迈出了 Spring Boot 开发的第一步!

如果你想继续深入,我可以为你:

  • 生成一个完整的 Spring Boot 项目模板
  • 解释 application.properties 配置
  • 演示如何连接数据库
  • 教你如何做 REST API

欢迎继续提问!

http://www.dtcms.com/a/492440.html

相关文章:

  • 网站建设频教程网站建设小程序开发公司
  • 个人网站建站指南重庆网站搭建公司
  • 小百姓这个网站谁做的怎么进入wordpress修改界面
  • 专业网站建设推广个人互联网创业项目
  • 机关网站建设工作总结常用来做网站的首页
  • 贵阳公司做网站做网站需要哪些技能
  • 高权重网站发外链枣强网址建站
  • FPGA实现CIC抽取滤波器
  • 深圳快速网站制作哪家快wordpress自适应设置宽度
  • qq临时会话网站搜索引擎网站推广法 怎么做
  • 国内可以做的国外兼职网站高端网站建设论坛
  • 网站广告策划wordpress如何使用
  • 网站品牌推广公司最新被百度收录的网站
  • 19. Linux free命令、awk命令
  • NewStarCTF2025-Week2-Pwn
  • 网站建设5个why分销网站怎么做
  • 永州做网站的公司河南省建设厅执业资格注册中心网站
  • 3-C++中类大小影响因素
  • 广州外贸网站公司新零售网络推广方案
  • mybatis返回map对象,在线程内将getkey值后赋值给stirng,会线程卡死问题
  • 【北邮-本科-通信原理】第五章关于HDB3编码的C++实现
  • 酒类网站建设方案案酷玛网站建设
  • 晋江网站建设联系电话销售渠道都有哪些
  • 商务网站建设策划书2000字做汽车团购的网站有哪些
  • 网站的域名空间思茅网站建设
  • 定西市网站建设企业wordpress网站缩
  • 黑河做网站公司wordpress标签管理系统
  • RunnableParallel
  • 做网站要学什么c语言如何在手机上运行wordpress
  • 建设农产品网站总结ppt三明市建设局网站