Spring-Data REDIS 的 Spring Bean 覆盖
Posted
技术标签:
【中文标题】Spring-Data REDIS 的 Spring Bean 覆盖【英文标题】:Spring Bean Override for Spring-Data REDIS 【发布时间】:2020-08-07 03:03:37 【问题描述】:我正在尝试覆盖 RedisCustomConversions [初始帖子](RedisCustomConversions using Redis Repository 注意到一些不一致的行为。
当我从 IDE 运行 spring boot 应用程序时,我得到了上面帖子中提到的错误,但是如果使用 java -jar myapp.jar 执行应用程序,它可以正常工作。这听起来不错,但这让我怀疑这种行为是否一致?即我的重载 bean 是否会一直连接?还是随机的?
我还从 /actuator/beans 端点注意到,当在 IDE 中执行时,我得到了这个
redisCustomConversions:
aliases: [ ],
scope: "singleton",
type: "org.springframework.data.redis.core.convert.RedisCustomConversions",
dependencies: []
但是从命令行运行我看到了这个。
redisCustomConversions:
aliases: [ ],
scope: "singleton",
type: "org.springframework.data.redis.core.convert.RedisCustomConversions",
resource: "class path resource [com/my/project/cache/config/RedisConfig.class]",
dependencies: [
"MyWriterConverter",
"MyReaderConverter"
]
所以问题是,我们可以依赖这种行为吗?或者它是随机的,对于某些部署,将加载默认的 RedisCustomConversions,而对于其他我的自定义 RedisCustomConversions 将被加载(这会使应用程序崩溃,因为 REDIS 中的数据格式会不同)?
【问题讨论】:
【参考方案1】:我和你有同样的问题,在我的头撞到墙上的时间比我想承认的要长之后,我在 spring-data gitter 中询问了。他们是这样回答的:
使用Spring Boot时,需要在同一个配置类上声明
@EnableRedisRepositories
和@Bean
对RedisCustomConversions
的定义。这是目前@EnableRedisRepositories
构建方式的限制。
【讨论】:
感谢您的回复 Taylor,我已退出该项目,因此没有代码可以试用。但是如果我将来必须使用它,这将有所帮助。以上是关于Spring-Data REDIS 的 Spring Bean 覆盖的主要内容,如果未能解决你的问题,请参考以下文章
Spring之Redis访问(Spring-data-redis)
Spring data redis-StringRedisTemplate 用法
Spring boot->redis value值出现两个双引号