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>
相关推荐
鹿角片ljp7 小时前
LeetCode 64:最小路径和复盘|二维 DP 与 ACM 模式完整写法
java·数据结构·算法
+VX:Fegn08958 小时前
计算机毕业设计|基于springboot + vue蛋糕店管理系统(源码+数据库+文档)
前端·数据库·vue.js·spring boot·课程设计
泡海椒8 小时前
PDF 表格样式优化:jquick-pdf 边框、圆角、背景色
java·开发语言·pdf
Nicander9 小时前
我给 Excalidraw 做了一个本地工作区:DrawSpace
前端·开源
景熙55239 小时前
15.Java 8 Stream 流入门到实战
java·开发语言·数据结构
wno70410 小时前
Spring Security权限控制
java·python·spring
wno70410 小时前
Spring Boot整合Kafka
spring boot·kafka
杨运交10 小时前
[071][验证码模块]基于Spring拦截器的验证码认证设计思想
java·后端·spring
Geek-Chow11 小时前
CountDownLatch in Java
java