1. 什么是Spring Boot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
1.1 Spring Boot的核心特性
- 自动配置:根据类路径中的jar包、类,为jar包里的类自动配置Bean
- 起步依赖:将具备某种功能的坐标打包到一起,提供一些默认的功能
- 内嵌服务器:无需部署到外部容器,可直接运行
- 生产就绪:提供生产级别的监控、健康检查等功能
1.2 Spring Boot的优势
- 简化配置:减少XML配置,采用注解和Java配置
- 快速开发:提供starter依赖,快速集成各种技术
- 微服务友好:天然支持微服务架构
- 云原生:支持Docker、Kubernetes等云原生技术
2. 环境准备
2.1 开发环境要求
- JDK 8+:推荐使用JDK 11或JDK 17
- Maven 3.6+ 或 Gradle 6+
- IDE:IntelliJ IDEA、Eclipse、VS Code等
2.2 创建第一个Spring Boot项目
方法一:使用Spring Initializr
-
访问 https://start.spring.io/
-
选择项目元数据:
- Project: Maven
- Language: Java
- Spring Boot: 3.2.0
- Group: com.example
- Artifact: demo
- Name: demo
- Package name: com.example.demo
- Packaging: Jar
- Java: 17
-
添加依赖:
- Spring Web
- Spring Boot DevTools
方法二:使用IDE创建
在IntelliJ IDEA中:
- File → New → Project
- 选择Spring Initializr
- 配置项目信息
- 选择依赖
3. 项目结构解析
src/
├── main/
│ ├── java/
│ │ └── com/example/demo/
│ │ └── DemoApplication.java
│ └── resources/
│ ├── application.properties
│ └── static/
│ └── templates/
└── test/
└── java/
└── com/example/demo/
└── DemoApplicationTests.java
3.1 核心文件说明
DemoApplication.java - 主启动类
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
application.properties - 配置文件
# 服务器配置
server.port=8080
server.servlet.context-path=/demo
# 应用配置
spring.application.name=demo
spring.profiles.active=dev
# 日志配置
logging.level.com.example.demo=DEBUG
4. 第一个REST API
4.1 创建控制器
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
return String.format("Hello %s!", name);
}
@GetMapping("/")
public String home() {
return "Welcome to Spring Boot!";
}
}
4.2 运行应用
- 在IDE中右键运行DemoApplication
- 或使用Maven命令:
mvn spring-boot:run - 访问 http://localhost:8080/hello
5. 配置文件详解
5.1 application.properties
# 服务器配置
server.port=8080
server.servlet.context-path=/api
server.servlet.session.timeout=30m
# 数据库配置
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
# JPA配置
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
# 日志配置
logging.level.org.springframework.web=DEBUG
logging.level.com.example.demo=INFO
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n
5.2 application.yml
server:
port: 8080
servlet:
context-path: /api
session:
timeout: 30m
spring:
datasource:
url: jdbc:h2:mem:testdb
driver-class-name: org.h2.Driver
username: sa
password:
jpa:
hibernate:
ddl-auto: create-drop
show-sql: true
properties:
hibernate:
format_sql: true
logging:
level:
org.springframework.web: DEBUG
com.example.demo: INFO
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"
6. 开发工具
6.1 Spring Boot DevTools
DevTools提供以下功能:
- 自动重启:代码变更时自动重启应用
- LiveReload:浏览器自动刷新
- 属性默认值:开发环境优化配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
6.2 热部署配置
# 关闭热部署
spring.devtools.restart.enabled=false
# 排除不需要重启的资源
spring.devtools.restart.exclude=static/**,public/**
# 监听额外路径
spring.devtools.restart.additional-paths=src/main/java
7. 测试
7.1 单元测试
package com.example.demo;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.TestPropertySource;
@SpringBootTest
@TestPropertySource(properties = {
"spring.datasource.url=jdbc:h2:mem:testdb"
})
class DemoApplicationTests {
@Test
void contextLoads() {
// 测试Spring上下文加载
}
}
7.2 集成测试
package com.example.demo.controller;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureWebMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@SpringBootTest
@AutoConfigureWebMvc
class HelloControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void testHello() throws Exception {
mockMvc.perform(get("/hello"))
.andExpect(status().isOk())
.andExpect(content().string("Hello World!"));
}
}
8. 打包和部署
8.1 打包应用
# Maven打包
mvn clean package
# 运行jar包
java -jar target/demo-0.0.1-SNAPSHOT.jar
# 指定配置文件
java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
8.2 Docker部署
Dockerfile
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
构建和运行
# 构建镜像
docker build -t demo-app .
# 运行容器
docker run -p 8080:8080 demo-app
9. 常见问题解决
9.1 端口占用问题
# 查看端口占用
netstat -ano | findstr :8080
# 杀死进程
taskkill /PID <进程ID> /F
9.2 内存不足
# 设置JVM参数
java -Xms512m -Xmx1024m -jar app.jar
9.3 配置文件不生效
检查配置文件位置和格式:
- 配置文件必须在classpath根目录
- YAML格式注意缩进
- Properties文件注意编码
10. 最佳实践
10.1 项目结构规范
src/main/java/com/example/demo/
├── config/ # 配置类
├── controller/ # 控制器
├── service/ # 服务层
├── repository/ # 数据访问层
├── entity/ # 实体类
├── dto/ # 数据传输对象
├── util/ # 工具类
└── DemoApplication.java
10.2 代码规范
- 包命名:使用小写字母,多个单词用点分隔
- 类命名:使用大驼峰命名法
- 方法命名:使用小驼峰命名法
- 常量命名:全大写,下划线分隔
10.3 配置管理
- 环境分离:dev、test、prod环境配置分离
- 敏感信息:使用环境变量或配置中心
- 配置验证:使用@ConfigurationProperties验证配置
11. 总结
Spring Boot通过自动配置和起步依赖,大大简化了Spring应用的开发。本文介绍了:
- 基础概念:Spring Boot的核心特性和优势
- 项目创建:多种方式创建Spring Boot项目
- 项目结构:标准的项目目录结构
- REST API:创建第一个Web接口
- 配置文件:properties和yml配置方式
- 开发工具:DevTools的使用
- 测试:单元测试和集成测试
- 部署:打包和Docker部署
- 问题解决:常见问题的解决方案
- 最佳实践:开发规范和配置管理
通过本教程,小伙伴们已经掌握了Spring Boot的基础知识,可以开始构建自己的Spring Boot应用了。
1048

被折叠的 条评论
为什么被折叠?



