Spring Boot 入门指南:从零开始构建 Java Web 应用

1. Spring Boot 简介

Spring Boot 是 Spring 框架的一个子项目,旨在简化 Spring 应用的初始搭建和开发过程。它通过自动配置、起步依赖和嵌入式服务器等特性,让开发者能够快速创建独立运行、生产级别的 Spring 应用。

2. Spring Boot 的核心特性

  • 自动配置:根据项目依赖自动配置 Spring 应用,减少大量 XML 配置。
  • 起步依赖:提供一系列预配置的依赖包,简化 Maven/Gradle 配置。
  • 嵌入式服务器:内置 Tomcat、Jetty 或 Undertow,无需部署 WAR 包。
  • 生产就绪:提供健康检查、指标、外部化配置等生产级功能。
  • 无代码生成:无需 XML 配置,通过注解和约定实现配置。

3. 快速开始:创建第一个 Spring Boot 应用

3.1 环境准备

  • JDK 8 或更高版本
  • Maven 3.3+ 或 Gradle 4.4+
  • IDE(推荐 IntelliJ IDEA 或 Eclipse)

3.2 使用 Spring Initializr 创建项目

访问 https://start.spring.io,选择以下配置:

  • 项目类型:Maven
  • 语言:Java
  • Spring Boot 版本:选择最新稳定版
  • 依赖:Spring Web

3.3 项目结构

plaintext 复制代码
src/main/java
├── com/example/demo
│   ├── DemoApplication.java      # 主启动类
│   └── controller
│       └── HelloController.java  # 控制器示例
src/main/resources
├── application.properties        # 配置文件
└── static/                      # 静态资源
└── templates/                   # 模板文件

3.4 编写第一个 REST 接口

java 复制代码
package com.example.demo.controller;
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!";
}
}

3.5 运行应用

bash 复制代码
# 方式一:使用 Maven
mvn spring-boot:run
方式二:直接运行主类
在 IDE 中运行 DemoApplication.java

访问 http://localhost:8080/hello 即可看到返回结果。

4. 常用配置与注解

4.1 配置文件

Spring Boot 支持多种配置文件格式:

  • application.properties:键值对格式
  • application.yml:YAML 格式,层次更清晰
yaml 复制代码
# application.yml 示例
server:
  port: 8081
  servlet:
    context-path: /api
spring:
datasource:
url: jdbc:mysql://localhost:3306/testdb
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver

4.2 核心注解

  • @SpringBootApplication:主启动类注解,包含 @Configuration、@EnableAutoConfiguration、@ComponentScan
  • @RestController:声明 RESTful 控制器
  • @RequestMapping / @GetMapping / @PostMapping:请求映射
  • @Autowired:自动注入依赖
  • @Configuration:声明配置类
  • @Bean:声明 Bean 对象

5. 数据库集成

5.1 集成 MySQL

pom.xml 中添加依赖:

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

5.2 创建实体类

java 复制代码
package com.example.demo.entity;
import javax.persistence.*;
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(nullable = false)
private String username;

@Column(nullable = false)
private String email;

// 省略 getter/setter 和构造方法
}

5.3 创建 Repository

java 复制代码
package com.example.demo.repository;
import com.example.demo.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}

6. 项目打包与部署

6.1 打包为可执行 JAR

bash 复制代码
mvn clean package

生成的 JAR 文件位于 target/ 目录,可直接运行:

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

6.2 打包为 WAR(传统部署)

修改主启动类:

java 复制代码
@SpringBootApplication
public class DemoApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(DemoApplication.class);
}

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

修改 pom.xml 打包方式:

xml 复制代码
<packaging>war</packaging>
相关推荐
圆山猫1 小时前
[Virtualization](四):Linux KVM/RISC-V 的 vCPU 运行路径
java·linux·risc-v
城管不管2 小时前
ReAct、Plan-and-Execute、Reflection 三大智能 Agent 范式核心区别
java·人工智能·算法·spring·ai·动态规划
郭老二2 小时前
【前端】vue3:编译步骤
前端
IT小白杨2 小时前
从环境制备到自动化工作流:多账号运营的工程化架构拆解
java·经验分享·自动化·安全架构·指纹浏览器
豆瓣鸡2 小时前
算法日记 - Day3
java·开发语言·算法
萧瑟余晖3 小时前
Java深入解析篇九之NIO详解
java·网络·nio
不在逃避q3 小时前
Trae/Vs Code/Cursor命令行无法跑npm命令
前端·arcgis·npm
夏殇之殁3 小时前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript
The Chosen One9853 小时前
高进度算法模板速记(待完善)
java·前端·算法
陈随易3 小时前
MoonBit抓包模块pcap,查看电脑的每一次联网通信
前端·后端·程序员