我们正在使用Spring Cache Manager
with spring-data-redis
1.5.2
。这些天我们想升级spring-data-redis
到最新版本,即:1.6.2.RELEASE。
由于一些奇怪的原因,一切都很好,1.5.2
但是当升级到1.6.2
我们得到
org.springframework.beans.factory.UnsatisfiedDependencyException:在 ServletContext 资源 [/WEB-INF/spring-cache.xml] 中定义名称为“cacheManager”的 bean 创建错误:通过构造函数参数表示的不满足的依赖关系,索引为 0 类型 [org.springframework .data.redis.core.RedisOperations]:不明确的构造函数参数类型 - 您是否将正确的 bean 引用指定为构造函数参数?
此消息似乎是一个错误,因为redisTemplate
它RedisTemplate
实现了RedisOperations
.
知道如何解决吗?
附言
请注意,删除版本cache configuration
时1.6.2
似乎效果很好。所以问题出在缓存上。
配置
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-redis.xml
/WEB-INF/spring-cache.xml
</param-value>
</context-param>
spring-redis.xml
<context:annotation-config />
<bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration" />
<bean
class="org.springframework.security.web.session.HttpSessionEventPublisher" />
<!-- end of seesion managment configuration -->
<bean id="redisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="port" value="${app.redis.port}" />
<property name="hostName" value="${app.redis.hostname}" />
<property name="password" value="${app.redis.password}" />
<property name="usePool" value="true" />
</bean>
<!-- for publishing string over redis channels -->
<bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
<property name="connectionFactory" ref="redisConnectionFactory" />
</bean>
<!-- for storing object into redis key,value -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="redisConnectionFactory" />
</bean>
弹簧缓存.xml
<!-- This file must load after spring-redis.xml -->
<cache:annotation-driven />
<!-- declare Redis Cache Manager -->
<bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager"
c:template-ref="redisTemplate" />
</beans>