【发布时间】:2018-08-08 08:46:08
【问题描述】:
在演示 spring-boot 项目中配置 spring-session-data-redis 后,bootRun 任务失败并显示以下消息:
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of method redisTemplate in org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration required a bean of type 'org.springframework.data.redis.connection.RedisConnectionFactory' that could not be found.
- Bean method 'redisConnectionFactory' not loaded because @ConditionalOnClass did not find required classes 'org.apache.commons.pool2.impl.GenericObjectPool', 'redis.clients.jedis.Jedis'
- Bean method 'redisConnectionFactory' not loaded because @ConditionalOnClass did not find required class 'io.lettuce.core.RedisClient'
Action:
Consider revisiting the entries above or defining a bean of type 'org.springframework.data.redis.connection.RedisConnectionFactory' in your configuration.
我做了什么(也就是重现的步骤):
1.使用Spring Initializr创建了一个【Gradle with Java and Spring Boot 2.1.0 M1 + Web依赖】项目。
2. 按照Spring Session - Spring Boot 的说明配置Spring Session。更具体地说:
- 添加compile 'org.springframework.session:spring-session-data-redis'
到 build.gradle 的依赖块
- 通过将spring.session.store-type=redis 添加到application.properties 文件来配置商店类型
- 配置连接
属性(在application.properties 文件中):spring.redis.host,
spring.redis.password 和 spring.redis.port 具有相关值
3.从项目根目录执行./gradlew bootRun,收到上述错误
问题:
1.据我从错误消息中了解到,RedisConnectionFactory 加载失败,因为它既找不到 Jedis 也找不到 Lettuce 驱动程序。 spring-session-data-redis 不应该默认带其中一个驱动程序吗?
2.如果我想使用Jedis驱动,如何解决这个问题?
3. 如果我想使用 Lettuce 驱动,如何解决这个问题?
【问题讨论】:
-
1. 2 号或 3 号包括他们自己。该示例也使用
spring-boot-starter-data-redis,默认情况下会引入驱动程序。 -
@M.Deinum 谢谢。该指南本身没有提到
spring-boot-starter-data-redis,也没有明确的驱动程序依赖。此外,这似乎是一种行为改变——我可以使用 spring-boot 的1.5.16.BUILD-SNAPSHOT版本完美地运行bootRun,而无需明确的驱动程序依赖。 -
指令不正确,与它们链接的示例应用程序不同步。它has a dependency on spring-boot-starter-data-redis.
-
@AndyWilkinson 谢谢。是否有推荐的方法来拉入 Lettuce 驱动程序:隐式添加
spring-boot-starter-data-redis依赖项,或显式添加io.lettuce:lettuce-core依赖项? -
我会使用启动器。
标签: spring-boot spring-session