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>