HelloWorld 与 Spring Boot 教程

用 Spring Boot 写一个 HelloWorld 很简单:通过 Spring Initializr 或手动建 Maven/Gradle 项目,添加 Spring Web 依赖,创建带 @SpringBootApplication 的主类和带 @RestController 的控制器,映射 /hello 返回字符串,运行 main 方法后在浏览器访问 http://localhost:8080/hello 即可看到响应。开发环境通常需要 JDK、IDE 和构建工具(Maven 或 Gradle)。下面一步步把原理、配置和常见问题都讲清楚。

HelloWorld 与 Spring Boot 教程

先把脉:Spring Boot 是什么,为什么它能让 HelloWorld 更简单

想象你要开一家咖啡店,传统做法是从水电、装修、采购器材开始,每一项都得亲自打点;Spring Boot 就像一个“咖啡店开业套装”,把常用的配置、依赖和约定都预先准备好了,你只需把咖啡菜单(业务代码)放进去,就能马上营业。

核心思想(用很直白的语言)

  • 约定优于配置:大多数常见配置已经默认好,减少样板式代码。
  • 自动配置:根据 classpath 中的依赖自动激活相关配置(比如包含 spring-web 就会自动配置嵌入式 Tomcat 和 DispatcherServlet)。
  • 生产就绪特性:Actuator、健康检查等可以很容易加上。

准备工作(环境与工具)

别急着敲代码,先确认几样东西在你电脑里:

  • JDK(建议 11 或 17,Spring Boot 3.x 要求 Java 17+)
  • 构建工具:Maven 或 Gradle(选一个你熟悉的)
  • IDE:IntelliJ IDEA、VS Code、Eclipse 都行;带 Spring 插件更好
  • 网络:如果使用 Spring Initializr(start.spring.io)生成项目,需要能访问(当然也可以手动建)

用 Spring Initializr 快速生成项目(最省事的方式)

Spring Initializr 是官方提供的项目生成器。关键步骤:

  • 选择构建工具(Maven/Gradle)、语言(Java)、Spring Boot 版本
  • 填写 Group、Artifact 等基础信息
  • 在 Dependencies 选择 Spring Web(最基础的 web 支持)
  • 下载并解压,导入到 IDE 中

项目目录长得像什么

文件/目录 作用
src/main/java/…/Application.java 主类,带 @SpringBootApplication,应用入口
src/main/resources/application.properties 配置文件(端口、日志级别等)
pom.xml / build.gradle 依赖和构建配置

手把手写一个 HelloWorld(Maven 示例)

下面我把关键文件和注解都一步步解释,边写边讲原理,这样你不会只是会复制黏贴。

1. 主类:Application.java

这是应用的入口,显示地告诉 Spring:从这里开始扫描组件并启动内嵌服务器。

代码(示意):

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

解释:@SpringBootApplication 包含三个注解的组合(@Configuration、@EnableAutoConfiguration、@ComponentScan),负责启动自动配置和组件扫描。SpringApplication.run 会启动 Spring 上下文并启动嵌入式容器(默认是 Tomcat)。

2. 控制器:HelloController.java

Web 层的入口,最简单的是用 @RestController 返回一个字符串。

代码(示意):

package com.example.demo;

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

@RestController
public class HelloController {
@GetMapping(“/hello”)
public String hello() {
return “Hello, Spring Boot!”;
}
}

解释:@RestController 等于 @Controller + @ResponseBody,直接将返回值写入 HTTP 响应体;@GetMapping(“/hello”) 声明这是一个 GET 请求的处理方法,路径为 /hello。

运行与验证

  • 在 IDE 中运行 Application 的 main 方法,或使用命令行 mvn spring-boot:run
  • 控制台出现 Tomcat 启动提示并监听端口(默认 8080)
  • 打开浏览器访问 http://localhost:8080/hello ,应该看到返回的字符串

逐步解释:为什么这些注解和配置能工作

把系统拆成小块解释,比只是知道“这样写就行”靠谱得多。

  • 自动配置(Auto Configuration):Spring Boot 会在启动时根据 classpath 中的依赖选择合适的配置类并应用。比如当检测到 spring-webmvc 时,会注册 DispatcherServlet 等 MVC 基础设施。
  • 嵌入式容器:默认会把 Tomcat 或 Jetty 作为容器打包进可运行 jar,运行 main 即可启动服务,省了单独部署 war 到外部容器的麻烦。
  • 依赖管理:Spring Boot 的父工程管理了一套合理的依赖版本,避免你去手动控制每个库的版本。

常见问题与排查(实用到位)

  • 端口被占用:启动失败或提示 Tomcat 端口被占用。可以在 application.properties 中设置 server.port=8081 或其它端口。
  • 404 错误:检查控制器类是否被扫描到(包路径是否在主类的子包),请求路径是否正确,是否忘记写 @RestController。
  • 依赖冲突:如果手动添加了其他版本的库,可能和 Spring Boot 管理的版本冲突,Maven 的 dependency:tree 很有用。
  • 类加载或 NoClassDefFoundError:通常是依赖没加或版本不匹配,检查 pom.xml 或 build.gradle。

application.properties 常见配置项

放点常用的,方便你马上修改环境。

配置项 作用
server.port 改变内嵌服务器端口(默认 8080)
spring.profiles.active 激活配置文件(dev/test/prod)
logging.level.root 设置日志级别(DEBUG/INFO/WARN/ERROR)

让开发更顺手:DevTools、热重载和测试

调试时不想每改一次都重启?加入 DevTools。

  • DevTools:在开发时加入 spring-boot-devtools,保存代码会触发快速重新加载(注意生产环境不要带这个依赖)。
  • 测试:Spring Boot 提供了 spring-boot-starter-test,包含 JUnit、MockMvc 等,写一个小测试验证控制器行为可以避免回归问题。

打包与部署:从开发到生产的几步

两种常见打包方式:

  • 可执行 jar(fat jar):Maven 的 spring-boot-maven-plugin 或 Gradle 的 Boot 插件,会把依赖打入一个可执行 jar,直接 java -jar app.jar。
  • Docker 镜像:把可执行 jar 放进一个轻量镜像(如 openjdk:17-jdk-slim),写个 Dockerfile 就能容器化部署。

一个简单的 Dockerfile(示意)

FROM eclipse-temurin:17-jdk-jammy
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT [“java”,”-jar”,”/app.jar”]

进阶:配置文件、Profile 与环境隔离

不要把所有环境的配置都写在一个文件里,Spring Boot 提供了 profile 概念:

  • application.properties(通用配置)
  • application-dev.properties / application-prod.properties(针对不同环境的覆盖)
  • 通过 spring.profiles.active=dev 来激活对应环境

常用扩展点(对 HelloWorld 后续演进有帮助)

  • Spring Data JPA:快速接入数据库,实体与 Repository 模式让数据访问更简单。
  • Spring Security:保护你的接口,接入认证和权限。
  • Spring Actuator:暴露健康检查、度量、环境信息,方便运维。

性能与生产注意事项(写给实际部署的人)

  • 默认内嵌容器和 JVM 参数很重要,生产环境要调优 JVM(内存、GC)和连接池等。
  • 不要在生产环境启用 DevTools 或者 debug 日志等级。
  • 考虑使用外部配置中心(如 Spring Cloud Config)管理多实例配置。

把知识内化:用费曼法再复述一遍(简洁版)

如果要教别人,告诉他们三件事:一是 Spring Boot 省略大量繁琐配置,二是 @SpringBootApplication 启动并触发自动配置,三是写一个 @RestController 并映射一个路径就能提供 HTTP 服务。把这三步串起来,HelloWorld 就完成了。

拿来即用的检查清单(开箱即跑)

  • 确认 JDK 版本满足要求
  • 生成或创建项目并包含 spring-boot-starter-web
  • 创建主类并加 @SpringBootApplication
  • 创建控制器并映射 /hello
  • 运行并访问 http://localhost:8080/hello

我这儿还想提醒你的一些小经验(不那么教科书)

实战中常见的小坑和习惯:

  • 包名尽量不要用默认的,主类放在根包下以便组件扫描覆盖项目所有包。
  • 如果出现 JSON 序列化问题,检查是否缺少 jackson 相关依赖(通常 starter 会带)。
  • 日志太多时,先把日志级别调成 INFO,再逐步打开 DEBUG 定位问题。

好吧,写到这里差不多了——如果你刚开始实践,先把上述最基础的流程跑通一次,然后一项一项去尝试配置、测试和打包。开始时别追求完美,跑通了才是真正的进步。祝你写出第一个稳定的 Spring Boot 服务,很快就能把它扩展成你需要的那套后端系统。

返回首页