环境:
- docker 的伪分布式 Redis 集群。主从分离,配备哨兵模式。
使用 Redisson 框架时,配置类的加载顺序问题
在 Spring 框架中,由于 IOC 的核心设计原则,我们理应将类的实例化生命周期管理交付给 Spring 进行管理。但是,对于 Spirng 自身的操作,我们也需要有一个比较清晰的认识。
在使用 redisson-spring-boot-starter-3.51.0.jar 包时,如果我们没有实例化 RedisTemplate 类,我们仍然会在启动类的日志里面看到默认的连接。一旦停掉本地默认地址的 Redis 服务,应用启动就会报错。这是什么缘故?
这是 Spring 框架导致的。它在启动并扫描托管 Bean 时,到 RedissonAutoConfigurationV2.class 处,会发现存在一个 @AutoConfiguration 注解,并且该注解还没有作为 Bean 进行管理。因此它会使用默认的配置进行注册为 Bean 实例。