跳到主要内容 Spring Boot 开发指南:基础与高级特性 | 极客日志
Java java
Spring Boot 开发指南:基础与高级特性 Spring Boot 是简化 Spring 应用开发的框架,具备自动配置、嵌入式服务器和起步依赖等特点。本文涵盖环境搭建、项目创建、RESTful API 开发、数据库集成、异常处理及单元测试等内容。此外还介绍了自动配置原理、Starter 模块、外部化配置、Actuator 监控以及异步任务、缓存机制、多环境配置和安全增强等高级功能。最后讨论了线程池、连接池优化及 Prometheus 监控方案,适合开发者系统学习 Spring Boot 的基础与进阶知识。
BigDataPan 发布于 2026/2/23 0 浏览
Spring Boot 开发指南:基础与高级特性
第一部分:Spring Boot 基础
一、Spring Boot 简介 Spring Boot 是 Spring 生态系统的一部分,旨在解决传统 Spring 开发中的复杂性问题。以下是它的主要特点:
自动配置 :根据类路径中的依赖项和配置文件,自动生成 Bean。
嵌入式服务器 :内置 Tomcat、Jetty 或 Undertow,无需外部部署。
起步依赖 :通过 Starter 模块简化依赖管理。
生产就绪特性 :提供监控、健康检查等功能。
二、环境准备
JDK :推荐使用 JDK 17 或更高版本。
Maven :用于管理项目依赖和构建。
IDE :推荐使用 IntelliJ IDEA 或 Eclipse。
Postman 或浏览器 :用于测试 RESTful API。
三、创建第一个 Spring Boot 应用
1. 创建 Maven 项目 如果你使用的是 IDE(如 IntelliJ IDEA),可以直接通过向导创建。如果手动创建,则需要编写 pom.xml 文件。
<project xmlns ="http://maven.apache.org/POM/4.0.0" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
<modelVersion > 4.0.0</modelVersion >
<groupId > com.example</groupId >
<artifactId > springboot-demo</artifactId >
<version > 1.0-SNAPSHOT</version >
<parent >
<groupId > org.springframework.boot</groupId >
<artifactId > spring-boot-starter-parent</artifactId >
<version > 3.1.0</version >
</parent >
<dependencies >
<dependency >
<groupId > org.springframework.boot</groupId >
<artifactId > spring-boot-starter-web</artifactId >
</dependency >
<dependency >
<groupId > org.projectlombok</groupId >
<artifactId > lombok</artifactId >
<optional > true</optional >
</dependency >
</dependencies >
<build >
<plugins >
<plugin >
<groupId > org.springframework.boot</groupId >
<artifactId > spring-boot-maven-plugin</artifactId >
</plugin >
</plugins >
</build >
</project >
2. 创建主应用程序类 Spring Boot 应用的核心是 @SpringBootApplication 注解,它包含了三个重要功能:
@SpringBootConfiguration:标识这是一个 Spring Boot 配置类。
@EnableAutoConfiguration:启用 Spring Boot 的自动配置功能。
@ComponentScan:扫描当前包及其子包中的组件。
package com.example.springbootdemo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootDemoApplication {
public static void main (String[] args) {
SpringApplication.run(SpringBootDemoApplication.class, args);
System.out.println("🚀 Spring Boot Application Started!" );
}
}
3. 创建控制器类 为了演示 RESTful API 的开发,我们创建一个简单的控制器类,提供两个接口:
/hello:返回固定的问候消息。
/greeting/{name}:根据传入的名字动态生成问候消息。
package com.example.springbootdemo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class GreetingController {
@GetMapping("/hello")
public String sayHello () {
return "🌟 Hello, World!" ;
}
@GetMapping("/greeting/{name}")
public String greetUser (@PathVariable String name) {
return "👋 Hello, " + name + "! Welcome to Spring Boot!" ;
}
}
4. 配置 application.properties Spring Boot 提供了一个默认的配置文件 application.properties,用于定义应用的各种参数。例如,我们可以修改默认端口号或设置应用名称。
# application.properties
server.port=8081
spring.application.name=springboot-demo-app
5. 运行应用程序
通过 IDE 启动 :直接运行 SpringBootDemoApplication 类中的 main 方法。
通过 Maven 命令启动 :在终端中运行以下命令:
... 2023 -xx-xx xx:xx:xx [main] INFO com.example.springbootdemo.SpringBootDemoApplication - 🚀 Spring Boot Application Started!
6. 测试接口 启动完成后,可以通过浏览器或 Postman 测试接口:
http://localhost:8081/api/greeting/Alice
👋 Hello, Alice! Welcome to Spring Boot!
http://localhost:8081/api/hello
第二部分:扩展功能与高级特性
一、数据库集成 为应用添加数据库支持,可以使用 MySQL、PostgreSQL 或 H2 数据库。以下是一个简单的 MySQL 集成示例:
1. 添加依赖 在 pom.xml 中添加 MySQL 和 JPA 依赖:
<dependency >
<groupId > org.springframework.boot</groupId >
<artifactId > spring-boot-starter-data-jpa</artifactId >
</dependency >
<dependency >
<groupId > mysql</groupId >
<artifactId > mysql-connector-java</artifactId >
</dependency >
2. 配置数据库连接 在 application.properties 中配置数据库连接信息:
spring.datasource.url=jdbc:mysql://localhost:3306/demo?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=your_password
spring.jpa.hibernate.ddl-auto=update
3. 创建实体类和 Repository 接口
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
}
public interface UserRepository extends JpaRepository <User, Long> {}
二、异常处理 为接口添加全局异常处理器,提高系统的健壮性。创建一个 GlobalExceptionHandler 类:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(ResourceNotFoundException.class)
public ResponseEntity<?> handleResourceNotFoundException(ResourceNotFoundException ex) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(ex.getMessage());
}
@ExceptionHandler(Exception.class)
public ResponseEntity<?> handleException(Exception ex) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error: " + ex.getMessage());
}
}
三、单元测试 使用 JUnit 和 Mockito 编写单元测试,确保代码质量。以下是一个简单的测试示例:
@SpringBootTest
class GreetingControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void testSayHello () throws Exception {
mockMvc.perform(get("/api/hello" ))
.andExpect(status().isOk())
.andExpect(content().string("🌟 Hello, World!" ));
}
}
四、Swagger 文档 集成 Swagger,自动生成 API 文档。在 pom.xml 中添加依赖:
<dependency >
<groupId > io.springfox</groupId >
<artifactId > springfox-boot-starter</artifactId >
<version > 3.0.0</version >
</dependency >
@SpringBootApplication
@EnableSwagger2
public class SpringBootDemoApplication { ... }
访问 http://localhost:8081/swagger-ui.html 查看文档。
第三部分:深入学习
一、自动配置(Auto-Configuration) Spring Boot 的自动配置通过扫描类路径中的依赖项,结合默认配置规则,自动生成 Bean 并注入到 Spring 容器中。
如何工作 :
Spring Boot 在启动时会加载 META-INF/spring.factories 文件中的配置。
根据类路径中的依赖项,匹配相应的 @Conditional 注解条件。
如果条件满足,则创建并注册相应的 Bean。
二、Starter 模块 Spring Boot 提供了一系列的 Starter 模块,用于简化依赖管理。每个 Starter 模块都包含一组相关的依赖项和自动配置规则。
常用 Starter 模块 :
spring-boot-starter-web:用于构建 Web 应用。
spring-boot-starter-data-jpa:用于数据库集成。
spring-boot-starter-security:用于安全认证。
spring-boot-starter-test:用于单元测试。
三、外部化配置 Spring Boot 支持通过外部化配置文件(如 application.properties 或 application.yml)来管理应用的配置参数。
server:
port: 8081
spring:
application:
name: springboot-demo-app
server.port=8081
spring.application.name=springboot-demo-app
四、Actuator 监控 Spring Boot Actuator 是一个用于监控和管理应用的模块。它可以提供健康检查、指标监控、线程分析等功能。
常用端点 :
/actuator/health:检查应用的健康状态。
/actuator/metrics:查看应用的性能指标。
/actuator/env:查看应用的环境变量。
启用 Actuator :
在 pom.xml 中添加依赖:
<dependency >
<groupId > org.springframework.boot</groupId >
<artifactId > spring-boot-starter-actuator</artifactId >
</dependency >
第四部分:高级功能与优化
一、异步任务处理 Spring Boot 提供了强大的异步任务支持,可以显著提升应用的并发处理能力。通过 @Async 注解,你可以轻松实现异步方法调用。
示例代码 :
创建一个服务类,使用 @Async 注解定义异步方法:
@Service
public class AsyncService {
@Async
public void executeAsyncTask () {
System.out.println("Running async task..." );
try {
Thread.sleep(2000 );
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@RestController
@RequestMapping("/api")
public class AsyncController {
@Autowired
private AsyncService asyncService;
@GetMapping("/async")
public String triggerAsyncTask () {
asyncService.executeAsyncTask();
return "Async task triggered!" ;
}
}
启用异步支持 :
在主类或配置类中添加 @EnableAsync 注解:
@SpringBootApplication
@EnableAsync
public class SpringBootDemoApplication { ... }
二、缓存机制 缓存是提高应用性能的重要手段之一。Spring Boot 提供了对多种缓存解决方案的支持,例如 EhCache、Redis 和 Caffeine。
示例代码 :
使用 @Cacheable 注解标记需要缓存的方法:
@Service
public class CacheService {
@Cacheable(value = "greetings", key = "#name")
public String getGreeting (String name) {
System.out.println("Generating greeting for " + name);
return "Hello, " + name + "!" ;
}
}
第一次调用时会生成结果并缓存,后续调用直接从缓存中获取:
@RestController
@RequestMapping("/api")
public class CacheController {
@Autowired
private CacheService cacheService;
@GetMapping("/cache/{name}")
public String testCache (@PathVariable String name) {
return cacheService.getGreeting(name);
}
}
启用缓存支持 :
在主类或配置类中添加 @EnableCaching 注解:
@SpringBootApplication
@EnableCaching
public class SpringBootDemoApplication { ... }
三、多环境配置 在实际开发中,通常需要为不同的环境(如开发、测试、生产)提供不同的配置。Spring Boot 支持通过 application-{profile}.properties 文件实现多环境配置。
创建多环境配置文件 :
application-dev.properties:开发环境配置。
application-prod.properties:生产环境配置。
激活指定环境 :
在 application.properties 中设置活动环境:
spring.profiles.active=dev
java -jar your-app.jar --spring.profiles.active=prod
四、安全性增强 Spring Boot 提供了对 Spring Security 的强大支持,可以帮助你快速实现用户认证和授权。
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure (HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/api/public" ).permitAll()
.anyRequest().authenticated()
.and()
.formLogin().disable()
.httpBasic();
}
}
启用 Spring Security :
在 pom.xml 中添加依赖:
<dependency >
<groupId > org.springframework.boot</groupId >
<artifactId > spring-boot-starter-security</artifactId >
</dependency >
第五部分:性能优化与监控
一、线程池优化 Spring Boot 默认使用 Tomcat 嵌入式容器,可以通过调整线程池参数来优化性能。
server.tomcat.max-threads=500
server.tomcat.min-spare-threads=50
server.tomcat.accept-count=200
二、数据库连接池优化 使用 HikariCP(Spring Boot 默认的数据库连接池)进行优化。
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=30000
三、监控与报警 结合 Spring Boot Actuator 和第三方工具(如 Prometheus 和 Grafana),可以实现全方位的监控和报警。
集成 Prometheus :
在 pom.xml 中添加依赖:
<dependency >
<groupId > io.micrometer</groupId >
<artifactId > micrometer-registry-prometheus</artifactId >
</dependency >
management.endpoints.web.exposure.include=*
management.endpoint.metrics.enabled=true
参考资料 微信扫一扫,关注极客日志 微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具 Keycode 信息 查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
Escape 与 Native 编解码 JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
JavaScript / HTML 格式化 使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
JavaScript 压缩与混淆 Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online