Autowire Ich möchte RedisTemplate im Spring Boot verwenden. Ich kann StringRedisTemplate erfolgreich verwenden, aber ich kann RedisTemplate nicht verwenden. Hier ist der Code.Gewusst wie: 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());
}
}
Dann wird das Testverfahren aus: testobject(), Hier ist der Fehlerbericht:
2017-12-17 16: 12: 12,079 ERROR 4708 --- [Main] os test.context.TestContextManager: abgefangene Ausnahme während ermöglicht TestExecutionListener [org.springframework.boot.test.a[email protected]49070868] Testinstanz [[email protected]]
vorzubereiten 210org.springframework.beans.factory.UnsatisfiedDependencyException: Fehler beim Erstellen einer Bean mit dem Namen 'springworld.RedisEntityTests': Unzufriedene Abhängigkeit ausgedrückt durch Feld 'redisisTemplate'; verschachtelte Ausnahme ist org.springframework.beans.factory.NoSuchBeanDefinitionException: Nein qualifizierenden Bohne vom Typ ‚org.springframework.data.redis.core.RedisTemplate‘ zur Verfügung: mindestens 1 Bohne erwartet, die als autowire Kandidat qualifiziert. Dependency Anmerkungen: {@ org.springframework.beans.factory.annotation.Autowired (required = true)} bei org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject (AutowiredAnnotationBeanPostProcessor.java:588) ~ [spring-bohnen-4.3.13.RELEASE.jar: 4.3.13.RELEASE] unter org.springframework.beans.factory.annotation.InjectionMetadata.inject (InjectionMetadata.java:88) ~ [spring-bohnen-4.3. 13.RELEASE.jar: 4.3.13.RELEASE] unter org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues (AutowiredAnnotationBeanPostProcessor.java:366) ~ [spring-bohnen-4.3.13.RELEASE.jar: 4.3 .13.RELEASE] unter org.springframework.beans.factory.suppo rt.AbstractAutowireCapableBeanFactory.populateBean (AbstractAutowireCapableBeanFactory.java:1264) ~ [Feder-Bohnen-4.3.13.RELEASE.jar: 4.3.13.RELEASE] bei org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireBeanProperties (AbstractAutowireCapableBeanFactory .java: 386) ~ [spring-bohnen-4.3.13.RELEASE.jar: 4.3.13.RELEASE] unter org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies (DependencyInjectionTestExecutionListener.java:118) ~ [feder-test-4.3.13.RELEASE.jar: 4.3.13.RELEASE] um org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance (DependencyInjectionTestExecutionListener.java:83) ~ [Feder-Test-4.3. 13.RELEASE.jar: 4.3.13.RELEASE] unter org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance (SpringBootDependencyInjectionTestExecutionListener.java:44) ~ [feder-boot-test-autoconfigure-1.5.9.RELEASE.jar: 1.5.9.RELEASE] unter org. springframework.test.context.TestContextManager.prepareTestInstance (TestContextManager.java:230) ~ [federtest-4.3.13.RELEASE.jar: 4.3.13.RELEASE] unter org.springframework.test.context.junit4.SpringJUnit4ClassRunner .createTest (SpringJUnit4ClassRunner.java:228) [federtest-4.3.13.RELEASE.jar: 4.3.13.RELEASE] um org.springframework.test.context.junit4.SpringJUnit4ClassRunner $ 1.runReflectiveCall (SpringJUnit4ClassRunner.java:287) [feder-test-4.3.13.RELEASE.jar: 4.3.13.RELEASE] unter org.junit.internal.runners.model.Re flectiveCallable.run (ReflectiveCallable.run).java: 12) [junit-4.12.jar: 4.12] um org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock (SpringJUnit4ClassRunner.java:289) [feder-test-4.3.13.RELEASE.jar: 4.3.13.RELEASE] unter org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild (SpringJUnit4ClassRunner.java:247) [Feder-Test-4.3.13.RELEASE.jar: 4.3.13.RELEASE] unter org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild (SpringJUnit4ClassRunner.java:94) [federtest-4.3.13.RELEASE.jar: 4.3.13.RELEASE] um org.junit.runners.ParentRunner $ 3 .run (ParentRunner.java:290) [junit-4.12.jar: 4.12] um org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:71) [junit-4.12.jar: 4.12] um org.junit.runners.ParentRunner.runChildren (ParentRunner.java:288) [junit-4.12.jar: 4.12] um org.junit.runners.ParentRunner.access $ 000 (ParentRunner.java:58) [junit-4.12.jar: 4.12] bei org.junit.runners.ParentRunner $ 2.Bewertung (ParentRunner.java:268) [junit-4.12.jar: 4.12] bei org. springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate (RunBeforeTestClassCallbacks.java:61) [federt 4.3.13.RELEASE.jar: 4.3.13.RELEASE] bei org.springframework.test.context. junit4.statements.RunAfterTestClassCallbacks.evaluate (RunAfterTestClassCallbacks.java:70) [Feder-Test-4.3.13.RELEASE.jar: 4.3.13.RELEASE] unter org.junit.runners.ParentRunner.run (ParentRunner.java:363) [junit-4.12.jar: 4.12] bei org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run (SpringJUnit4ClassRunner.java:191) [feder-test-4.3.13.RELEASE.jar: 4.3.13.RELEASE] um org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run (JUnit4TestReference.java:86) [.cp /: na ] um org.eclipse.jdt.internal.junit.runner.TestExecution.run (TestExecution.java:38) [.cp /: na] um org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:539) [.cp /: na] um org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests (RemoteTestRunner.java:761) [. cp /: na] um org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run (RemoteTestRunner.java:461) [.cp /: na] um org.eclipse.jdt.internal.junit.runner .RemoteTestRunner.main (RemoteTestRunner.java:207) [.cp /: na] verursacht durch: org.springframework.beans.factory.NoSuchBeanDefinitionException: Nein qualifizierenden Bohne vom Typ ‚org.springframework.data.redis.core .RedisTemplate 'verfügbar: erwartet mindestens 1 Bean , die sich als Autowire-Kandidat qualifiziert. Dependency Anmerkungen: {@ org.springframework.beans.factory.annotation.Autowired (required = true)} bei org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound (DefaultListableBeanFactory.java:1493) ~ [Frühling -beans-4.3.13.RELEASE.jar: 4.3.13.RELEASE] unter org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency (DefaultListableBeanFactory.java:1104) ~ [spring-bohnen-4.3.13. RELEASE.jar: 4.3.13.RELEASE] um org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency (DefaultListableBeanFactory.java:1066) ~ [spring-bohnen-4.3.13.RELEASE.jar: 4.3.13 .RELEASE] unter org.springframework.beans.factory.annotation.AutowiredAnnotationB eanPostProcessor $ AutowiredFieldElement.inject (AutowiredAnnotationBeanPostProcessor.java:585) ~ [spring-bohnen-4.3.13.RELEASE.jar: 4.3.13.RELEASE] ...29 gemeinsame Rahmen weggelassen
Ihr Code ist gut, aber ich möchte dies: RedisTemplate, RedisTemplate und so weiter, nicht nur RedisTemplate . Ich möchte diesen Code wiederverwenden. irgendwelche Vorschläge? Danke trotzdem. –
Versuchen Sie es mit dem Objekt. –
Verwirrt mich immer noch. und es scheint, dass der Spring Boot 1.5.9 JedisConnectionFactory so injizieren kann. Ich tue dies, wie es gerade ' @Bean RedisTemplate redisTemplate (RedisConnectionFactory Fabrik) { ... template.setConnectionFactory (Fabrik) arbeitet; ... } ' aber ich habe ein anderes Problem: ClassCastException, Zeichenfolge kann nicht in Objekt umgewandelt werden –