首页 > 项目 > 当前页面

如何设计一个 Spring Boot Redis Starter?

2026-06-26 NEW个对象

📌 如何设计一个 Spring Boot Redis Starter?

Redis Starter 本质上就是一个 Spring Boot 自动配置组件,遵循"约定优于配置"思想。开发者只需要引入 Starter,并在 application.yml 中完成少量配置,即可自动完成 RedisTemplate、连接池、序列化、缓存、分布式锁等组件的初始化,实现真正的开箱即用。

🎯 一、Starter整体结构

redis-spring-boot-starter │ ├── RedisProperties ├── RedisAutoConfiguration ├── RedisTemplateConfig ├── RedisService ├── RedisServiceImpl ├── RedisLockService ├── RedisLockServiceImpl ├── RedisCacheService ├── RedisSerializerFactory ├── RedisExceptionHandler ├── RedisHealthIndicator └── META-INF └── AutoConfiguration.imports

🚀 二、核心组成

① RedisProperties(配置类)

负责读取 application.yml 中的配置,将配置项绑定到 Java 对象。

@ConfigurationProperties(prefix = "my.redis") public class RedisProperties { private String host; private Integer port; private String password; private Integer database; private Duration timeout; }

对应配置如下:

my: redis: host: localhost port: 6379 password: 123456 database: 0 timeout: 3000ms
✅ 职责:

只负责读取配置,不负责创建任何 Bean。

② RedisAutoConfiguration(自动配置类)

这是整个 Starter 最核心的类,负责自动创建所有 Redis 相关 Bean。

@Configuration @EnableConfigurationProperties(RedisProperties.class) @ConditionalOnClass(RedisTemplate.class) public class RedisAutoConfiguration { }

主要负责自动注册:

  • RedisConnectionFactory
  • RedisTemplate
  • RedisService
  • RedisLockService
  • RedisCacheService

例如:

@Bean @ConditionalOnMissingBean public RedisService redisService() { return new RedisServiceImpl(); }
✅ 职责:

统一完成 Bean 注册,实现自动装配。

③ RedisTemplateConfig

负责创建并配置 RedisTemplate。

@Bean public RedisTemplate<String,Object> redisTemplate() { }

通常需要配置:

  • RedisConnectionFactory
  • Key 序列化
  • Value 序列化
  • HashKey 序列化
  • HashValue 序列化

例如:

StringRedisSerializer GenericJackson2JsonRedisSerializer

④ RedisService

Starter 通常不会直接暴露 RedisTemplate,而是封装一层统一接口。

public interface RedisService { void set(String key,Object value); Object get(String key); void delete(String key); Boolean exists(String key); }
✅ 好处:

屏蔽 RedisTemplate 底层复杂 API,统一业务调用方式。

⑤ RedisServiceImpl

负责真正操作 RedisTemplate。

@Service public class RedisServiceImpl implements RedisService { @Autowired private RedisTemplate<String,Object> redisTemplate; }

通常封装:

  • String
  • Hash
  • List
  • Set
  • ZSet
  • TTL
  • 批量删除

⑥ RedisLockService

很多公司都会在 Starter 中直接提供分布式锁能力。

public interface RedisLockService { boolean lock(String key); void unlock(String key); }

底层可以基于:

  • SET NX PX
  • Lua脚本
  • Redisson

⑦ RedisCacheService

统一封装缓存能力,而不是让业务直接操作 Redis。

cache.put(); cache.get(); cache.evict();

⑧ RedisSerializerFactory

负责根据配置动态创建序列化器。

例如:

serializer: jackson serializer: string serializer: fastjson

内部统一返回对应 Serializer。


⑨ RedisExceptionHandler

统一处理 Redis 相关异常,例如:

  • 连接失败
  • 连接超时
  • 序列化异常
  • 连接池耗尽

⑩ RedisHealthIndicator

集成 Spring Boot Actuator 后,可以自动检测 Redis 健康状态。

implements HealthIndicator

访问:

/actuator/health

⑪ AutoConfiguration.imports

Spring Boot 3.x 中,通过 AutoConfiguration.imports 注册自动配置类。

META-INF/spring/ org.springframework.boot.autoconfigure.AutoConfiguration.imports

内容:

com.demo.redis.RedisAutoConfiguration

🔥 三、整体执行流程

引入 Starter ↓ 读取 application.yml ↓ RedisProperties 加载配置 ↓ RedisAutoConfiguration 自动装配 ↓ 创建 ConnectionFactory ↓ 创建 RedisTemplate ↓ 创建 RedisService ↓ 创建 LockService ↓ 创建 CacheService ↓ 业务直接注入使用
📌 面试总结

一个完整的 Spring Boot Redis Starter 通常包含配置类(RedisProperties)、自动配置类(RedisAutoConfiguration)、RedisTemplate 配置类、业务接口(RedisService)、默认实现(RedisServiceImpl)、缓存服务、分布式锁服务、序列化工厂、异常处理、健康检查以及 AutoConfiguration.imports 等组件。其中 RedisAutoConfiguration 是整个 Starter 的核心,负责根据配置自动创建 Bean,实现真正的开箱即用。

相关文章

NEW个对象 NEW个对象
JAVA是世界上最好的语言