《Spring Boot 3实战案例锦集》PDF电子书现已出炉!
🎉🎉我们精心打造的《Spring Boot 3实战案例锦集》PDF电子书现已正式完成,目前已经有105个案例,后续还将继续更新。文末有电子书目录。
💪💪永久更新承诺:
我们郑重承诺,所有订阅合集的粉丝都将享受永久免费的后续更新服务。随着Spring相关技术的更新升级,我们的电子书也将持续更新,确保您始终掌握最前沿、最实用的技术知识。
💌💌如何获取:
订阅我们的合集《点我订阅》,并通过私信联系我们,我们将第一时间将电子书发送给您。
环境:SpringBoot3.4.0
1. 简介
2.1 开启延迟初始化
延迟初始化会推迟bean的创建,直到它们被实际需要时,从而提高了启动时间。
spring:main:lazy-initialization: true
但是这会带来一个问题,如果你使用了一个不存在的Bean,那么只有在真正用到的时候才会发现错误。所以,在实际工作中尤其要注意这个问题。如下示例:
public class CCommonent {}@Componentpublic class Pack {@Resourceprivate CCommonent cc ;}
当我们开启了延迟初始化,那么容器启动不会有错误,但是用的时候就会抛出错误了。
2.2 减少不必要的配置
Spring Boot默认会加载所有的自动配置。禁用不必要的自动配置可以加快启动速度并改善内存使用。
spring:autoconfigure:exclude=com.x.y.z.XxxAutoConfiguration
2.3 JVM内存优化配置
调整JVM设置可以防止内存泄漏并提升性能。
#建议将内存的初始大小和最大内存设置为一样;避免自动扩缩容而影响性能java -Xms2048m -Xmx2048m -jar pack_app.jar
启用 G1 垃圾收集器:
#java9开始默认java -XX:+UseG1GC -jar pack_app.jar
对于超低延迟应用程序,请使用 ZGC:
# java11开始引入,15正式发布稳定版java -XX:+UseZGC -jar pack_app.jar
2.4 优化数据库性能
使用连接池
这应该没有不使用连接池的吧?推荐使用Hikari,主打一个快。如下配置示例:
spring:datasource:driverClassName: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/datajpausername: rootpassword: roottype: com.zaxxer.hikari.HikariDataSourcehikari:minimumIdle: 100maximumPoolSize: 100autoCommit: trueidleTimeout: 30000poolName: packCPmaxLifetime: 1800000connectionTimeout: 30000connectionTestQuery: SELECT 1建立索引
确保对经常查询的列创建索引,推荐创建联合索引。
# 如下MySQLCREATE INDEX idx_product_name ON product (name);
有关SQL相关的优化请查看下面这篇文章:
2.5 使用缓存减少数据库调用
缓存将频繁访问的数据存储在内存中,从而减少数据库调用并提高响应时间。
引入依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency>
开启缓存
@SpringBootApplication@EnableCachingpublic class App {}
使用缓存
("products")public List<Product> getAllProducts() {return productRepository.findAll();}
关于缓存的详细使用,请查看下面链接:
弃用Spring Cache!首选多级缓存框架JetCache
2.6 优化REST API接口
Spring Boot REST API应该针对速度和低延迟进行优化。
启用GZIP压缩
server:compression:enabled: truemime-types: text/html,text/xml,text/plain,application/json
这将大大减小响应内容的大小。详细请查看下面链接:
API接口优化!基于Spring Boot 实现Deflate压缩技术
2.7 耗时任务使用异步处理
对于繁重的计算或长时间运行的任务,使用异步处理。可以使用@Async注解来异步执行这些任务。
开启异步功能
@EnableAsync@SpringBootApplicationpublic class App{}
任务异步执行
public CompletableFuture<String> processHeavyTask() {return CompletableFuture.supplyAsync(() -> "Task Completed");}
关于异步任务的更多知识,请查看下面链接:
SpringBoot异步任务@Async你真的会用吗?这6点细节你知道吗?
你用错了!详解SpringBoot异步任务&任务调度&异步请求线程池的使用及原理
2.8 使用虚拟线程
Spring Boot 3支持虚拟线程,以提升多线程性能(支持异步任务,任务调度)。
自定义线程池对象
Executor taskExecutor() {return Executors.newVirtualThreadPerTaskExecutor();}
当使用默认线程池执行异步任务或任务调度时则需要开启如下功能配置:
spring:threads:virtual:enabled: true
2.9 异步记录日志
日志记录会降低应用程序的运行速度。使用异步日志记录可提高性能。
如下logback-spring.xml配置:
<configuration><appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"><appender-ref ref="FILE"/></appender></configuration>
这样可以防止日志记录减慢请求处理速度。
2.10 使用Actuator监控应用程序性能
Spring Boot Actuator 提供内置指标和健康监控。
引入依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
配置相应端点
management:endpoints:web:exposure:include: health,info,metrics
使用 /actuator/health 查看应用程序的运行状况。
有关Actuator更多内容请查看下面链接:
以上是本篇文章的全部内容,如对你有帮助帮忙点赞+转发+收藏
推荐文章
API接口优化!基于Spring Boot 实现Deflate压缩技术
这款开源组件太惊艳!Spring Boot仅需一行代码,轻松接入DeepSeek
追踪数据变化,轻松应对挑战:Spring Data JPA审计功能解析
高级开发!Spring Boot 自定义@Transactional,底层原理很简单
基于Spring Boot给所有Controller接口添加统一前缀的5种方式
Spring Boot中通过3种方式初始化数据,你们如何选择?
真香!RestTemplate、RestClient再不要直接使用了,新玩法来了


