Spring Boot 入门指南:从零开始构建微服务

1. Spring Boot 简介

Spring Boot 是 Spring 框架的一个子项目,旨在简化基于 Spring 的应用开发。它通过"约定优于配置"的理念,提供了大量默认配置和快速启动的脚手架,让开发者能够快速创建独立运行、生产级别的 Spring 应用程序。

核心特性:

  • 自动配置:根据项目依赖自动配置 Spring 应用。
  • 独立运行:内嵌了 Tomcat、Jetty 或 Undertow 等 Web 服务器,无需部署 WAR 包。
  • 生产就绪:提供健康检查、指标、外部化配置等生产级特性。
  • 无代码生成:无需 XML 配置,通过 Java 注解和少量配置即可完成。

2. 环境准备与项目创建

2.1 系统要求

  • JDK:Java 8 或更高版本(推荐 JDK 11 或 17)。
  • 构建工具:Maven 3.3+ 或 Gradle 4.4+。
  • IDE:IntelliJ IDEA(推荐)、Eclipse 或 VS Code。

2.2 创建 Spring Boot 项目

推荐使用 Spring Initializr 在线生成项目骨架。

步骤:

  1. 访问 Spring Initializr 网站。
  2. 选择项目信息:
    • Project:Maven 或 Gradle。
    • Language:Java。
    • Spring Boot:选择稳定版本(如 3.x)。
    • Group:com.example(你的组织域名)。
    • Artifact:demo(项目名称)。
  3. 添加依赖:选择 Spring WebSpring Boot DevToolsLombok 等。
  4. 点击 Generate 下载项目压缩包。
  5. 解压后导入 IDE。

或者使用命令行:

bash 复制代码
curl https://start.spring.io/starter.zip -d dependencies=web,devtools,lombok -d type=maven-project -d groupId=com.example -d artifactId=demo -o demo.zip
unzip demo.zip

3. 项目结构解析

一个典型的 Spring Boot 项目结构如下:

复制代码
demo/
├── src/
│   ├── main/
│   │   ├── java/com/example/demo/
│   │   │   ├── DemoApplication.java      # 主启动类
│   │   │   └── controller/
│   │   │       └── HelloController.java  # 控制器示例
│   │   └── resources/
│   │       ├── application.properties    # 配置文件
│   │       └── static/                   # 静态资源
│   └── test/                             # 测试代码
├── pom.xml                               # Maven 配置
└── README.md

关键文件说明:

  • DemoApplication.java :包含 @SpringBootApplication 注解的主类,是整个应用的入口。
  • application.properties:应用配置文件,可配置端口、数据库连接等。
  • pom.xml:Maven 依赖管理文件。

4. 编写第一个 REST API

src/main/java/com/example/demo/controller 目录下创建 HelloController.java

java 复制代码
package com.example.demo.controller;

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

@RestController
@RequestMapping("/api")
public class HelloController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, Spring Boot!";
    }
}

注解说明:

  • @RestController:标记该类为 REST 控制器,返回值自动转为 JSON。
  • @RequestMapping("/api"):定义控制器的基础路径。
  • @GetMapping("/hello"):映射 HTTP GET 请求到 /api/hello 路径。

5. 运行与测试

5.1 启动应用

在 IDE 中直接运行 DemoApplication 类的 main 方法,或在项目根目录执行:

bash 复制代码
# Maven
./mvnw spring-boot:run

# 或 Gradle
./gradlew bootRun

控制台输出 Started DemoApplication in X.XXX seconds 表示启动成功。

5.2 测试 API

打开浏览器或使用 curl 访问:

复制代码
http://localhost:8080/api/hello

应返回 Hello, Spring Boot!

5.3 热部署

Spring Boot DevTools 支持热重启。修改代码后保存,应用会自动重启(无需手动停止)。

6. 常用配置与自定义

6.1 修改服务器端口

application.properties 中添加:

properties 复制代码
server.port=9090

或在 application.yml 中:

yaml 复制代码
server:
  port: 9090

6.2 配置日志级别

properties 复制代码
logging.level.com.example.demo=DEBUG
logging.level.root=INFO

src/main/resources 下创建 banner.txt 文件,写入自定义 ASCII 艺术字,启动时会显示。

7. 连接数据库(以 MySQL 为例)

7.1 添加依赖

pom.xml 中添加:

xml 复制代码
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

7.2 配置数据源

application.properties

properties 复制代码
spring.datasource.url=jdbc:mysql://localhost:3306/testdb
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

7.3 创建实体与仓库

java 复制代码
@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;
    // getters and setters
}

public interface UserRepository extends JpaRepository<User, Long> {
}

8. 打包与部署

8.1 打包为可执行 JAR

bash 复制代码
./mvnw clean package

生成的 target/demo-0.0.1-SNAPSHOT.jar 包含了所有依赖和嵌入式 Web 服务器。

8.2 运行 JAR 包

bash 复制代码
java -jar target/demo-0.0.1-SNAPSHOT.jar

8.3 构建 Docker 镜像

创建 Dockerfile

dockerfile 复制代码
FROM openjdk:17-jdk-slim
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

构建并运行:

bash 复制代码
docker build -t demo-app .
docker run -p 8080:8080 demo-app
相关推荐
2601_963870181 天前
【计算机毕业设计】基于Spring Boot的宠物领养救助平台的设计与实现
spring boot·课程设计·宠物
凤山老林1 天前
高保真集成测试:Spring Boot 结合 Testcontainers 的工程落地
spring boot·后端·集成测试
RuoyiOffice1 天前
SpringBoot3+Vue3 接口访问日志实战:@ApiAccessLog 慢接口、参数脱敏与 OperateLog 如何分工
spring boot·vue3·traceid·spring boot 3·访问日志·apiaccesslog·操作日志
林三的日常1 天前
【无标题】
java·spring boot·vscode·调试·后端开发
骑士雄师1 天前
【无标题】
微服务
counting money1 天前
SpringBoot 项目创建(IDEA不全,还需要修改)
java·spring boot·spring·maven
阿部多瑞 ABU1 天前
从0到1:用 Spring Boot 3.4 + Vue3 做一个能“智能排道次“的运动会编排系统(附核心算法)
java·spring boot·后端·算法·spring
MacroZheng1 天前
几行代码给项目集成AI功能,Spring AI 2.0太香了!
java·人工智能·spring boot
元界metalite1 天前
SpringBoot修改接口全字段更新为什么危险-MetaLite如何只更新变化字段
spring boot
Devin~Y1 天前
从内容社区到AI智能客服:Spring Boot + Spring Cloud + Spring AI 全栈实战面试拆解
java·spring boot·redis·elasticsearch·spring cloud·kafka·mybatis