2016-08-21 26 views
4

に失敗し、次のエラーが発生します。ここでは春・データのRedis 1.7.2インジェクションredisTemplateが

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisTemplate' defined in com.worktime.configure.JpaConfigurationTest: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.springframework.core.serializer.support.DeserializingConverter.<init>(Ljava/lang/ClassLoader;)V 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:834) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537) 
at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:125) 
at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60) 
at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:109) 
at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:261) 
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98) 
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116) 
... 25 more 
Caused by: java.lang.NoSuchMethodError: org.springframework.core.serializer.support.DeserializingConverter.<init>(Ljava/lang/ClassLoader;)V 
at org.springframework.data.redis.serializer.JdkSerializationRedisSerializer.<init>(JdkSerializationRedisSerializer.java:53) 
at org.springframework.data.redis.core.RedisTemplate.afterPropertiesSet(RedisTemplate.java:117) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) 
... 40 more 

は私のコードです:

@Bean 
public RedisConnectionFactory jedisConnectionFactory() { 
    nodes = new ArrayList<String>(); 
    nodes.add("10.10.13.174:7001"); 
    nodes.add("10.10.13.174:7002"); 
    nodes.add("10.10.13.174:7003"); 
    RedisClusterConfiguration conf = new RedisClusterConfiguration(nodes); 
    conf.setMaxRedirects(1000); 
    JedisConnectionFactory factory = new JedisConnectionFactory(conf); 

    return factory; 
} 

@Bean 
RedisTemplate<Object, Object> redisTemplate() { 
    RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<Object, Object>(); 
    redisTemplate.setConnectionFactory(jedisConnectionFactory()); 
    return redisTemplate; 
} 

私の春データredisバージョンは1.7.2、redisバージョンは2.8.1です。

+1

。 SpringデータRedisは新しいコンストラクタを使用します。[here](http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/serializer/support/DeserializingConverter.html#DeserializingConverter-java .lang.ClassLoader-) – mp911de

+0

4.3.2に変更しました。うまくいきました。ありがとうございます。^ _^ –

+0

@webdavid上記のXMLをどのように設定するのですか? 1.7.2.RELEASEとSpring 4.3.2。同じバージョンのRedisCacheManagerを設定するには? – nijogeorgep

答えて

1

Spring Data Redis 1.7.2.RELEASEで使用するために以下の設定を使用してください。これは注入の問題を引き起こしません。

<cache:annotation-driven cache-manager="redisCacheManager" /> 

    <!-- Redis Connection Factory --> 
    <beans:bean id="jedisConnectionFactory" 
     class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" 
     p:host-name="${redis.host-name}" p:port="${redis.port}" p:use-pool="true" /> 

    <!-- Redis Template Definition --> 
    <beans:bean id="redisTemplate" 
     class="org.springframework.data.redis.core.RedisTemplate" 
     p:connection-factory-ref="jedisConnectionFactory" p:keySerializer-ref="stringRedisSerializer" 
     p:hashKeySerializer-ref="stringRedisSerializer" /> 

    <beans:bean id="stringRedisSerializer" 
     class="org.springframework.data.redis.serializer.StringRedisSerializer" /> 

    <!-- declare Redis Cache Manager --> 
    <beans:bean id='redisCacheManager' 
     class='org.springframework.data.redis.cache.RedisCacheManager' 
     c:redis-operations-ref='redisTemplate'> 
    </beans:bean> 
+0

ニース。ありがとうございます。しかし、私は春のバージョンを変更する必要がありました。 – cdesmetz

1

Beanの定義を変更することなく、Springのバージョンをプロジェクトのpomに変更するだけで済みます。

<bean id="jedisConnectionFactoryStatic"  class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> 
    <property name="hostName" value="#{confMasterRedisStatic.host}" /> 
    <property name="port"  value="#{confMasterRedisStatic.port}" /> 
    <property name="usePool" value="true" /> 
</bean> 

<bean id="redisTemplateStatic" class="org.springframework.data.redis.core.StringRedisTemplate" 
     p:connection-factory-ref="jedisConnectionFactoryStatic" /> 

のpom.xml

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <!-- <spring.version>3.0.7.RELEASE</spring.version> --> 
    <spring.version>4.3.3.RELEASE</spring.version> 
</properties> 

<dependency> 
    <groupId>org.springframework.data</groupId> 
    <artifactId>spring-data-redis</artifactId> 
    <version>1.7.4.RELEASE</version> 
    <!-- <version>1.5.2.RELEASE</version> --> 
</dependency> 
は、少なくとも4.2.1へのSpring Frameworkのコアをアップグレードし
関連する問題