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
相关推荐
Flynt2 小时前
Spring Boot 3开虚拟线程,我把生产服务搞崩了两次
java·spring boot
Full Stack Developme3 小时前
SpringBoot 内嵌 Tomcat 的启动流程
spring boot·后端·tomcat
snow@li4 小时前
命名规范:企业级微服务模块前缀命名规范全景梳理
微服务·云原生·架构
beibeix201519 小时前
MITK中微服务三套注册表数据结构分析
微服务·mitk
Wang's Blog21 小时前
Go-Zero项目开发34: 微服务超时控制与重试机制实践
开发语言·微服务·golang·go-zero
X-⃢_⃢-X1 天前
四、OpenFeign远程调用
java·微服务·springboot·springcloud
beibeix20151 天前
MITK中两种微服务的三层架构实现对比
微服务·mitk
在水一缸1 天前
深入浅出:Node.js 下一代 ORM 架构设计与实战解析
数据库·微服务·云原生·node.js·orm·架构设计