我的应用程序使用一个“主”redis实例来处理会话存储和缓存,但出于其他原因需要与单独的“外部”实例进行通信 . 我试图确定在我的Spring Boot应用程序中配置它的“最佳”(“最惯用”?“最简单”?)方式 .
理想情况下,我只想使用主实例的默认自动配置,但只要我为外部实例注册连接工厂, LettuceConnectionConfiguration
中的 @ConditionalOnMissngBean({RedisConnectionFactory.class})
条件就会变为false,因此不会创建默认实例 . 看看 LettuceConnectionConfiguration
等发生了什么 . 我觉得我需要这样做 .
我可能不会将“外部”连接工厂公开为bean并且只在内部使用它来创建依赖它的bean但是,虽然在我的特定情况下这是可以的,但我想知道是否有更好的解决方案两个工厂都可以暴露在哪里 .
有没有什么方法可以暴露第二个 RedisConnectionFactory
而不禁用自动配置提供的默认值?是否有明确的"right way"做这种事情?
1 回答
您必须实现 BeanDefinitionRegistryPostProcessor 来调整RedisConnectionFactory顺序
在ExternalRedisConnectionFactoryBean中,您可以创建自己的RedisConnectionFactory
如果你想使用多个RedisConnectionFactory,你 @Qualifier 是正确的选择,例如