全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📝 1 篇文章 20 道配套习题

Spring 性能调优专题

专题说明

本专题讲解Spring应用的性能调优策略,涵盖连接池优化、缓存配置、异步处理、Bean懒加载、启动优化等核心内容。

学习目标

  1. 掌握数据库连接池的调优参数配置
  2. 学会使用Spring Cache进行缓存优化
  3. 了解异步处理和事件机制的性能优势
  4. 掌握Spring Boot启动优化策略

学习内容

  • 连接池调优:HikariCP参数优化
  • 缓存优化:Spring Cache、Redis集成
  • 异步处理:@Async、事件发布订阅
  • 启动优化:懒加载、组件扫描优化

学习建议

性能调优需要结合实际场景,建议在理解原理的基础上进行压测验证。连接池和缓存是见效最快的优化手段。

📝 发现内容有误?点击此处直接编辑

📝 配套习题(20 题)

1
单选题

在Spring Boot中,以下哪个配置项用于设置HikariCP连接池的最大连接数?

A

spring.datasource.hikari.minimum-idle

B

spring.datasource.hikari.maximum-pool-size

C

spring.datasource.hikari.connection-timeout

D

spring.datasource.hikari.idle-timeout

2
单选题

某高并发系统使用HikariCP连接池,配置maximum-pool-size=10,minimum-idle=5。当并发请求数达到50时,以下描述正确的是?

A

所有50个请求都能同时获取到连接

B

只有10个请求能同时执行,其余请求等待连接或超时

C

系统会自动将连接池扩展到50个连接

D

minimum-idle参数会限制最大连接数为5

3
多选题

以下哪些是HikariCP连接池的正确配置参数及其作用?

A

connection-timeout: 客户端等待连接的最大毫秒数

B

idle-timeout: 连接允许在池中闲置的最长时间

C

max-lifetime: 连接在池中的最大生命周期

D

leak-detection-threshold: 连接泄漏检测阈值

4
判断题

HikariCP连接池的maximum-pool-size应该设置为CPU核心数的2倍加1。

A

B

5
填空题

在Spring Boot 2.x及以上版本中,默认使用的连接池是________。如果需要切换到Druid连接池,需要在pom.xml中引入druid-spring-boot-starter依赖,并在配置文件中设置spring.datasource.type为________________________

6
单选题

在Spring中,使用哪个注解可以将方法的返回结果缓存起来?

A

@CacheEvict

B

@CachePut

C

@Cacheable

D

@Caching

7
多选题

以下关于Spring缓存注解的使用场景描述正确的有哪些?

A

@Cacheable适用于查询操作,先查缓存再执行方法

B

@CachePut适用于更新操作,每次都执行方法并更新缓存

C

@CacheEvict适用于删除操作,清除缓存中的数据

D

@Cacheable可以设置condition属性实现条件缓存

8
判断题

使用@Cacheable注解时,如果查询结果为null,Spring默认会将null值缓存起来以防止缓存穿透。

A

B

9
填空题

在Spring Boot中启用缓存功能,需要在启动类上添加______________注解。如果使用Redis作为缓存存储,需要配置spring.cache.type为______,并引入spring-boot-starter-data-redis依赖。

10
单选题

系统使用Redis作为缓存,某时刻大量缓存同时过期,导致所有请求直接打到数据库,这种现象称为?

A

缓存穿透

B

缓存雪崩

C

缓存击穿

D

缓存预热

11
单选题

在Spring中,使用哪个注解可以将方法声明为异步执行?

A

@Scheduled

B

@Async

C

@Transactional

D

@EventListener

12
多选题

以下关于Spring @Async注解的正确说法有哪些?

A

需要在配置类上添加@EnableAsync启用异步功能

B

@Async方法可以在同一个类内部调用生效

C

可以指定自定义线程池:@Async("myThreadPool")

D

@Async方法的返回值可以是Future或CompletableFuture

13
判断题

Spring的@Async异步方法中抛出的异常,调用方可以直接通过try-catch捕获。

A

B

14
填空题

Spring Boot默认使用_______________________作为异步任务执行器,它不为每个任务创建新线程,而是每次执行都创建新线程。生产环境建议配置自定义线程池,实现_______________接口或定义名为taskExecutor的______________________Bean。

15
单选题

以下代码执行后,数据库操作的结果是?

Java
@Transactional
public void process() {
    saveData();
    asyncService.sendNotification();
}

@Async
public void sendNotification() {
    // 发送通知
}
A

saveData()和sendNotification()在同一个事务中执行

B

sendNotification()在独立线程执行,不参与process()的事务

C

process()的事务会等待sendNotification()完成才提交

D

会抛出异常,@Transactional和@Async不能同时使用

16
单选题

在Spring Data JPA中,以下哪个配置可以开启批量插入优化?

A

spring.jpa.show-sql=true

B

spring.jpa.hibernate.ddl-auto=update

C

spring.jpa.properties.hibernate.jdbc.batch_size=50

D

spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect

17
多选题

以下哪些是Spring Data JPA提升查询性能的有效策略?

A

使用@EntityGraph指定关联查询策略

B

使用DTO投影减少数据传输

C

对所有实体设置fetch = FetchType.EAGER

D

使用@Query定义JOIN FETCH查询

18
判断题

JPA中使用findAll()查询实体列表,然后遍历列表访问每个实体的懒加载关联对象,会导致N+1查询问题。

A

B

19
填空题

在Spring中,对于只读查询操作,可以使用________________________注解进行优化。该配置会提示数据库驱动和Hibernate进行优化,如MySQL会使用______模式,Hibernate不会进行______,从而提升查询性能。

20
单选题

MySQL大数据量表使用LIMIT 100000, 10分页查询,性能急剧下降的原因是?

A

LIMIT语法本身有性能问题

B

MySQL需要扫描并跳过前100000条记录

C

索引失效导致全表扫描

D

分页偏移量不能超过10000

← 上一个专题 Spring 容器扩展点专题
下一个专题 → Spring 数据访问基础专题

📝 发现内容有误?点击此处直接编辑

想查看更多习题和详细解析?
小程序提供完整的题库和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库