spring - 生菜或绝地之间的 Spring Auto Configuration 优先级
问题描述
我想使用 Lettuce 作为 Redis 客户端,这是 spring-boot-starter-data-redis-reactive 的默认依赖项。但是,我将 Jedis 作为依赖项从另一个编写为纯 Java 代码(没有 Spring)的组件继承。由于 JedisConnectionFactory 的存在,这会导致在初始化 LettuceConnectionFactory 时发生冲突。
如何在确保为我自己的代码初始化 LettuceConnectionFactory 的同时让 Jedis 依赖于其他组件的使用?使用 LetticeConnectionFactory 的主要原因是我的服务中的反应式编程。两个连接工厂都配置为通过 RedisAutoConfiguration 进行初始化,没有优先级选项。
解决方案
您可以通过创建自己的@Configuration
类并在其中添加新的类来覆盖 RedisConnectionFactory @Bean
。
例如:
@Bean
RedisConnectionFactory myLettuceConnectionFactory() {
// your setup....
new LettuceConnectionFactory();
}
然后使用myLettuceConnectionFactory
bean 设置 RedisTemplate@Bean
@Bean
public RedisTemplate<String, Object> redisTemplate() {
final RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(myLettuceConnectionFactory());
// other settings...
return template;
}
推荐阅读
- json - 如何使用特殊字符通过 jq 访问属性?
- twilio - 使用 ngrok 隧道到 localhost 测试 Twilio 会导致错误的主机名错误
- sql - 从三个日期列中获取最大日期
- stata - 合并前如何识别公共变量?
- r-markdown - 在 rmarkdown 渲染中更改小数点和组标记
- jenkins - 在 Jenkins 的输入步骤期间使文件可供下载
- python - 如何在 matplotlib 中获得更轻的“喷射”颜色图
- wix - 降级会删除新版本的可执行文件,但不会重新安装旧版本
- c# - 如何使用 Azure Functions 提取 PDF 文件的文本?
- python - Python pandas 确保基于列值的每一行都有一组数据存在,如果没有添加行