在我的SpringBoot项目中,当我使用以下方式注入RedisTemplate时,没关系.@Repositorypublic class CommonDBDaoImpl implements CommonDBDao {@AutowiredRedisTemplateString, Object redisTemplate;....}但是,当我...
在我的SpringBoot项目中,当我使用以下方式注入RedisTemplate时,没关系.
@Repository
public class CommonDBDaoImpl implements CommonDBDao {
@Autowired
RedisTemplate<String, Object> redisTemplate;
....
}
但是,当我将RedisTemplate与自定义实体/ DTO一起使用时,注入失败了..
@Repository
public class CommonDBDaoImpl implements CommonDBDao {
@Autowired
RedisTemplate<String, PersonDTO> redisTemplate;
....
}
public PersonDTO implements Serializable {
//field
//getter and setter
}
记录:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'commonDBDaoImpl': Injection of autowired dependenci
es failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.data.red
is.core.RedisTemplate com.java.my.dao.CommonDBDaoImpl.redisTemplate; nested exception is org.springframework.beans.factory.NoSuchBeanDe
finitionException: No qualifying bean of type [org.springframework.data.redis.core.RedisTemplate] found for dependency: expected at least 1 bean which
qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.j
ava:334)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1210)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
at org.springframework.boot.test.SpringApplicationContextLoader.loadContext(SpringApplicationContextLoader.java:101)
at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:68)
at org.springframework.test.context.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:86)
... 25 more
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.data.redis.core.RedisTemplat
e com.java.my.dao.CommonDBDaoImpl.redisTemplate; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: N
o qualifying bean of type [org.springframework.data.redis.core.RedisTemplate] found for dependency: expected at least 1 bean which qualifies as autowi
re candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcesso
r.java:561)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.j
ava:331)
... 40 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.data.redis.core.RedisTempl
ate] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springfra
mework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcesso
r.java:533)
... 42 more
如何在RedisTemplate中使用自定义实体/ DTO?
解决方法:
RedisTemplate< String,PersonDTO> redisTemplate和RedisTemplate< String,Object> redisTemplate是两个不同的签名然后spring第一个找不到bean,你必须手动定义一个新的bean.
你可以这样做:
@Bean
public RedisTemplate<String, PersonDTO> redisTemplatePersonDTO() {
return new RedisTemplate<String, PersonDTO>() {
/* the declaration of the object here */
};
}
将此代码放在ApplicationConfig类中,并确保使用@EnableAutoConfiguration和@Configuration来声明它
本文标题为:java – SpringBoot注入RedisTemplate与自定义实体
基础教程推荐
- SSM如何实现在Controller中添加事务管理 2022-11-08
- Linux(Centos7)安装tomcat并且部署Java Web项目 2023-09-01
- oracle: jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的列类型: 1111 2023-10-29
- HttpClient实现文件上传功能 2023-04-12
- Spring中Bean的单例和多例使用说明 2023-01-02
- Java详解ScriptEngine接口动态执行JS脚本 2023-04-06
- CompletableFuture 异步编排示例详解 2023-05-08
- Spring Bean的8种加载方式总结 2023-06-24
- Java文件与IO流操作原理详细分析 2023-06-01
- Java创建型设计模式之工厂方法模式深入详解 2023-05-24
