SpringBoot中注入RedisTemplate泛型异常

报错如下:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'redisStockService': Unsatisfied dependency expressed through field 'redisTemplate'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.data.redis.core.RedisTemplate<java.lang.String, java.lang.Object>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

问题原因

RedisTemplate<String,Object>注入时用到了@Autowired注解,@Autowired默认按照类型byType装配的。当使用泛型装配的时候,springboot中无此类型。简单的办法是去掉泛型,但是不够优雅。

原理分析

将@Autowired注解修改成@Resource注解即可。

@Resource的作用相当于@Autowired,@Autowired按类型自动注入,而@Resource默认按名称自动注入。@Resource有两个属性是比较重要的,分别是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。

@Resource装配顺序
1、 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常。
2、如果指定了name,则从上下文中查找名称匹配的bean进行装配,找不到则抛出异常。
3、如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常。
4、如果既没有指定name,又没有指定type,则自动按照byName方式进行装配。如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。

解决


或者

SpringBoot中注入RedisTemplate泛型异常相关推荐

  1. SpringBoot中注入RedisTemplate实例异常解决

    https://blog.csdn.net/zhaoheng314/article/details/81564166 最近,在项目开发过程中使用了RedisTemplate,进行单元测试时提示&quo ...

  2. springboot中使用RedisTemplate操作redis遇到的问题

    首先说说问题, 在springboot中使用RedisTemplate操作redis时候,通过redis工具发现存入redis的数据的键为空 ,如下图: 点击空的键,弹出错误提示:不能打开值的标签,不 ...

  3. springboot中注入FilterRegistrationBean不生效原因

    springboot中注入FilterRegistrationBean不生效原因 回顾 最近自定义了两个过滤器,接口请求返回加密和sql注入处理过滤器,因为在封装一些工具包,我在单独调好之后,就打算做 ...

  4. SpringBoot中注入ApplicationContext对象的三种方式

    在项目中,我们可能需要手动获取spring中的bean对象,这时就需要通过 ApplicationContext 去操作一波了! 1.直接注入(Autowired) @Component public ...

  5. Springboot中使用ResponseBodyAdvice对异常,分页等请求进行封装

    在java 中,我们常常需要对接口返回的数据进行统一的封装,如调用接口异常的时候,我们不希望直接在后台报错,而是需要给前端或者友好提示是什么异常.又或者在处理分页请求的时候,我们可能需要对数据进行统一 ...

  6. 18.在springboot中的RedisTemplate序列化,json序列化

    序列化:把对象转化为可传输的字节序列过程称为序列化. 反序列化:把字节序列还原为对象的过程称为反序列化.. 为什么需要序列化 序列化最终的目的是为了对象可以跨平台存储,和进行网络传输.而我们进行跨平台 ...

  7. SpringBoot -- 过滤器注入Bean报异常 NullPointException问题分析及解决

    一.前言: 前不久在弄 spring security + jjwt 认证过滤器的时候,需要给 UsernamePasswordAuthenticationToken 类的构造方法传入 Collect ...

  8. redis结合springboot 无法注入redisTemplate问题

    报错: Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean o ...

  9. 《SpringBoot从菜鸟到老鸟》之SpringBoot 如何配置全局的异常捕获

    SpringBoot 如何配置全局的异常捕获 SpringBoot中自带的异常捕获机制返回的默认页面比较丑,对用户来说不够人性化. 所以这篇文章来讲解SpringBoot钟自定义全局异常捕获. 主要讲 ...

最新文章

  1. mysql同事包含_mysql 包含关系处理
  2. ⑨ 设计模式的艺术-22.中介者(Mediator)模式
  3. qt-designer使用教程3--编写自己的槽
  4. plsql清完表需不需要提交事务_分布式基础-分布式事务
  5. IOS开发地理编码与反向编码
  6. Redis单机和集群环境搭建
  7. Asp.Net Core 使用Quartz基于界面画接口管理做定时任务
  8. down.php无法打开,php下载文件 图片不能打开,该怎么解决
  9. 剑指offer(刷题31-40)--c++,Python版本
  10. SkyCaiji蓝天数据采集发布系统源码v2.3
  11. 软件测试颗粒度,测试用例粒度粗细的划分
  12. Sensei for Mac(系统优化清理工具)
  13. [HNOI2010]PLANAR
  14. 你还在生产环境改代码么?函数计算版本管理(三)使用别名进行灰度发布...
  15. 链表 之 字典树(讲解+模板)的构建
  16. C++里大写TRUE和小写true(BOOL与bool)
  17. 大数据调度工具之Oozie
  18. 如何批量设置 Word 文档的打开密码?
  19. python isupper_Python isupper()函数判断字符串字符是否都为大写形式
  20. 9 款最好的免费博客网站对比

热门文章

  1. JavaScript基础: DOM中操作属性以及自定义属性
  2. 数据库服务器日期修改吗,修改服务器时间会影响数据库吗
  3. MFC自绘控件学习总结
  4. PDF导出-复杂样式【像搭积木一样排版】
  5. 英特尔宣布 18 核桌面处理器 Skylake-X
  6. 2023.2 新方案 java代码混淆 java加密 字符串加密
  7. 高速电路设计基本概念之——stitching via/aggressor via
  8. 推荐个线上看漫画的网站
  9. 微信互联网推广经验7+1
  10. 【高烧39°考研上岸】23上交819考研经验分享