春の起動時にRedisTemplateを使いたいです。私は正常にStringRedisTemplateを使用することができますが、私はRedisTemplateを使用することはできません。ここにコードがあります。RedisTemplateを自動配線する方法<String、Object>
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisEntityTests {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate<String, RedisEntity> redisTemplate;
// This test case can run successfully.
@Test
public void testString() {
// save string
stringRedisTemplate.opsForValue().set("aaa", "111");
Assert.assertEquals("111", stringRedisTemplate.opsForValue().get("aaa"));
}
// This test case I got error.
@Test
public void testObject() throws Exception {
// save object
RedisEntity redisEntity = new RedisEntity("Tom", 20);
redisTemplate.opsForValue().set(redisEntity.getName(), redisEntity);
Assert.assertEquals(20, (redisTemplate.opsForValue().get("Tom")).getAge().longValue());
}
}
次に、試験方法の実行:
2017年12月17日16:12:12.079 ERROR 4708 --- [メイン] OS testObjectを()、ここで、エラー報告でありますtest.context.TestContextManager:キャッチ例外 がTestExecutionListener [org.springframework.boot.test.a[email protected]49070868]
が[ [email protected]】テスト・インスタンスを準備することを可能にしながら210org.springframework.beans.factory.UnsatisfiedDependencyException: 'springworld.RedisEntityTests'という名前のBeanを作成中にエラーが発生しました: フィールド 'redisTemplate'で表される満足しない依存関係。タイプ の無修飾ビーン「org.springframework.data.redis.core.RedisTemplate」入手可能:期待autowire候補としての資格少なくとも1つの豆 ネスト例外は org.springframework.beans.factory.NoSuchBeanDefinitionExceptionあります。依存関係の注釈: 〜 でorg.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588) {org.springframework.beans.factory.annotation.Autowired(必要=真)@} [spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) 〜[spring-beans-4.3。 13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366) 〜[spring-beans-4.3.13.RELEASE.jar:4.3 .13.RELEASE] at org.springframework.beans.factory.suppo org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanPropertiesで(AbstractAutowireCapableBeanFactory:rt.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264) 〜[4.3.13.RELEASE春豆-4.3.13.RELEASE.jar] .java:386) 〜[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] でorg.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118) 〜 [spring-test-4.3.13.RELEASE.jar:4.3.13.RELEASE] org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83) 〜[spring-test-4.3。 13.RELEASE.jar:4.3.13.RELEASE](SpringBootDependencyInjectionTestExecutionListener.java:44) 〜[spring-boot-test-autoconfigure-1.5.9.RELEASE.jar:1.5.9.RELEASE] at org。 springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230) 〜[spring-test-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner .createTest(SpringJUnit4ClassRunner.java:228)[spring-test-4.3.13.RELEASE.jar:4.3.13.RELEASE] にあるorg.springframework.test.context.junit4.SpringJUnit4ClassRunner $ 1.runReflectiveCall(SpringJUnit4ClassRunner.java:287) ) [spring-test-4.3.13.RELEASE.jar:4.3.13.RELEASE] org.junit.internal.runners.model.Re flectiveCallable.run(ReflectiveCallable。java:12) [junit-4.12.jar:4.12] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289) [spring-test-4.3.13.RELEASE.jar: 4.3.13.RELEASE] org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247) [spring-test-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94) の[spring-test-4.3.13.RELEASE.jar:4.3.13.RELEASE] org.junit.runners.ParentRunner $ 3 .run(ParentRunner.java:290) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:71) [junit-4.12.jar:4.12] org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:58) [JUnitの-4.12.jar:4.12] org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:268) [JUnitの-4.12.jar:4.12]で ORGで。 springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) [spring-test-4.3.13.RELEASE.jar:4.3.13.RELEASE]、 、org.springframework.test.context。 junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) [spring-test-4.3.13.RELEASE.jar:4.3.13.RELEASE] org.junit.runners.ParentRunner.run(ParentRunner.java:363) [JUnitの-4.12.jar:4.12] org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)で [spring-test-4.3.13.RELEASE.jar:4.3.13.RELEASE] org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) [.cp /:na] ] at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) [.cp /:na] at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:739) [.cp /:na] at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:761) [。 cp /:na] at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:461) [.cp /:na] org.eclipse.jdt.internal.junit.runner .RemoteTestRunner.main(RemoteTestRunner.java:207) [.CP /:NA]によって引き起こさ: org.springframework.beans.factory.NoSuchBeanDefinitionException:タイプ 「org.springframework.data.redis.coreなし 予選ビーン.RedisTemplate 'available:少なくとも1つのBean がautowire候補になります。依存注釈: {@ org.springframework.beans.factory.annotation.Autowired(=真必須)} でorg.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1493) 〜[春-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1104) 〜[spring-beans-4.3.13。 RELEASE.jar:4.3.13.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) 〜[spring-beans-4.3.13.RELEASE.jar:4.3.13 .RELEASE] at org.springframework.beans.factory.annotation.AutowiredAnnotationB eanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:585) 〜[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE] ...29の共通 フレームは、あなたがRedisTemplate.Youに注入するために使用するようになるBeanの設定ファイルを作成し、それを解決することができます定義されていない
あなたのコードが良いですが、私が欲しい本:RedisTemplate <文字列、ユーザー>、RedisTemplate <文字列は、Person>というように、だけでなく、RedisTemplate。そのコードを再利用したい。とにかくありがとうございます。 –
オブジェクトを使用してみてください。 –
私はまだ混乱しています。それは春のブート1.5.9カンテJedisConnectionFactoryを注入するようです。私はこれがうまくいくのですか? ' @Bean RedisTemplate redisTemplate(RedisConnectionFactory factory){ ... template.setConnectionFactory(factory); ... } しかし、別の問題があります:ClassCastException、String cantがオブジェクトにキャストされる –