SpringBoot 注入RedisTemplat 启动报错

需求

因为需要限制部门内多个人员同一时间操作同一批客户的需求,考虑下决定用Redis滑动窗口实现自过期以及并发校验。

问题

        新建了个Redis工具类封装RedisTemplat 操作,到启动时却发现无法正常启动,报错注入错误。

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)

The following candidates were found but could not be injected:
    - Bean method 'redisTemplate' in 'RedisAutoConfiguration' not loaded because @ConditionalOnMissingBean (names: redisTemplate; SearchStrategy: all) found beans named redisTemplate

        然后发现SpringBoot autoConfigure 中的RedisAutoConfiguration类已经注入了名为redisTemplate,类型为RedisTemplate<Object, Object>的JavaBean。使用@AutoWired 注解 byType(根据Bean的类型)自动装配,无法找到对应的Bean。

解决

        后续,使用@Resource byName装配即可正常使用;或者RedisTemplate不指定泛型使用。

总结

        之前背八股,经常说到@AutoWire与@Resource的区别,baType byName blahblah,但是真正去用、理解还是之上谈兵。

spring-boot-autoconfigure 模块

        autoconfigure内容是配置Bean实例到Spring容器的实际代码实现包,然后提供给starter依赖。Spring Boot Starter 帮我们自动注入了需要的Bean实例到Spring 容器中,不需要我们手动配置,SpringBoot 通过 spring-boot-autoconfigure 也体现了 “约定优于配置” 这一设计原则。

        SpringBoot 则可以依据 classpath 里面的依赖内容来自动配置 Bean 到 IOC 容器,Auto-configuration 会尝试推断哪些 Beans 是用户可能会需要的。比如如果HSQLDB 包在当前 classpath 下,并且用户并没有配置其他数据库链接,这时候 Auto-configuration 功能会自动注入一个基于内存的数据库连接到应用的 IOC 容器。但是要开启这个自动配置功能需要添加 @EnableAutoConfiguration 注解。

toLearn: SpringBoot核心组件,autoconfigure的实现

参考:

SpringBoot:模块探究之spring-boot-autoconfigure-CSDN博客

SpringBoot四大核心组件,你知道几个? - 知乎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/205169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue登陆失效\未登陆跳转页面,在登陆后回到当时页面

场景&#xff1a; 直接提供某个页面路径带了很多参数&#xff0c;然后退回到登陆页面&#xff0c;再登陆就回到该页面。 场景一&#xff1a; 登录过期后回到登陆页&#xff1b; let num 0 service.interceptors.response.use((response) > {const res response.data;…

SpringBoot集成系列--ElasticJob

文章目录 一、集成步骤1、添加 ElasticJob 的依赖2、配置 ElasticJob3、定义Job 二、ElasticJob-UI三、Elastic-Job分片理解四、原理 一、集成步骤 1、添加 ElasticJob 的依赖 引入相关依赖到pom.xml <!-- Elastic-Job --> <dependency><groupId>org.apac…

前端小技巧: 实现一个比较两个对象是否相等的方法

思路 实现两个对象的深度比较&#xff0c;模拟 lodash.isEqual() 写出一个简单的方案地址不一样&#xff0c;属性一样&#xff0c;判定相等 要求 基于以下示例&#xff0c;来判定是否相等 // obj1 和 job2 完全一致 const obj1 {a:10, b: {x: 100, y&#xff1a; 200}}; c…

Liunx Centos 防火墙操作

liunx centos 防火墙 查看防火墙状态 systemctl status firewalld查看已经开放的端口 firewall-cmd --list-ports添加端口3306 firewall-cmd --zonepublic --add-port3306/tcp --permanent重启防火墙 firewall-cmd --reload数据库开放账号可以外网登陆 mysql -u root -p …

剑指 Offer(第2版)面试题 27:二叉树的镜像

剑指 Offer&#xff08;第2版&#xff09;面试题 27&#xff1a;二叉树的镜像 剑指 Offer&#xff08;第2版&#xff09;面试题 27&#xff1a;二叉树的镜像解法1&#xff1a;递归 剑指 Offer&#xff08;第2版&#xff09;面试题 27&#xff1a;二叉树的镜像 题目来源&#x…

JavaSE语法之五:数组的定义与使用(超详解!!!)

文章目录 一、数组的概念1. 什么是数组2. 数组的创建及初始化3. 数组的使用3.1 数组中元素的访问3.2 遍历数组 二、数组是引用类型1. 初始JVM的内存分布2. 基本类型变量与引用变量的区别3. 引用变量4. 认识null 三、数组的应用场景1. 保存数据2. 作为函数的参数2.1 参数传基本类…

Cheat Engine修改器检测方案

在游戏安全对抗过程中&#xff0c;有不少外挂的实现基于对游戏内存模块进行修改&#xff0c;这类外挂通常会使用「内存修改器」。 据FairGuard游戏安全数据统计&#xff0c;在游戏面临的众多安全风险中&#xff0c;修改器的占比高达16% 。如此高的占比&#xff0c;修改器的危害…

血糖仪_智能便携式血糖检测仪定制_基于联发科MTK8788血糖仪方案

糖尿病早期通常没有明显的症状&#xff0c;因此很难自己意识到自己已经进入高血糖状态。而且&#xff0c;到医院进行检查需要挂号、门诊和排队等步骤&#xff0c;不仅费时费力&#xff0c;对于父母来说&#xff0c;频繁去医院检查是不现实的&#xff0c;也不舍得这样做。因此&a…

MySql数据库优化的八种方式

本文通过8个方法优化Mysql数据库&#xff1a;创建索引、复合索引、索引不会包含有NULL值的列、使用短索引、排序的索引问题、like语句操作、不要在列上进行运算、不使用NOT IN和<>操作。 1、创建索引 对于查询占主要的应用来说&#xff0c;索引显得尤为重要。很多时候性…

maven-assembly-plugin 自定义打包

我想把input文件夹给打包进去 pom文件 <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><executions><execution><!-- 配置执行器 --><i…

将jpg图片和txt标签文件重新命名

处理文件夹里面jpg图片的名字 将文件夹里面的jpg图片重新命名 import osdirectory C:\\Users\\23608\\Desktop\\Luli_work\\data\\fanStudent\\dataset i 1 for file in os.listdir(directory):if file.endswith(.jpg):old_name os.path.basename(file).split(.)[0]new_na…

vue2 百度地图实现 车在线路上移动 BMap、BMapGL

文章目录 效果BMap 实现vue2 中BMap实现vue2 中使用BMapGL实现 参考文章&#xff1a; 百度地图API实时画出动态运行轨迹&#xff08;一条行驶轨迹&#xff09;&#xff0c;车头实时指向行驶方向&#xff0c;设置角度偏移 下文中可能用到的图片统一放在上面&#xff0c;自取。 …

Halcon threshold_sub_pix (Operator)

read_image(Image,fabrik) threshold_sub_pix(Image,Border,35) dev_display(Border)Image是输入的原始图像&#xff0c;Threshold是设定的阈值&#xff0c;Width和Height是像素值计算区域的大小&#xff0c;ThresholdedRegion是经过分割后得到的二值化结果。 在对图像进行二值…

深眸科技以机器视觉高性能优势,为消费电子行业提供优质解决方案

机器视觉技术近年来发展迅速&#xff0c;基于计算机对图像的处理与分析&#xff0c;能够识别和辨别目标物体&#xff0c;被广泛应用于人工智能、智能制造等领域。 机器视觉凭借着高精度、高效率、灵活性和可靠性等优势&#xff0c;不断推进工业企业生产自动化和智能化进程&…

返回值的作用,用法

函数返回值 定义&#xff1a;函数的返回值是指函数被调用之后&#xff0c;执行函数体中的代码所得到的结果&#xff0c;这个结果通过return语句返回。 返回值的类型必须与函数定义类型一致 return用法 return 语句的一般形式为&#xff1a; …

Anaconda安装教程及多次安装失败原因

Anaconda下载网址 本教程包含两部分&#xff1a;安装教程和多次安装Anaconda导致的失败原因分析 Anaconda安装包官网下载链接 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b5be0deb0aef4a81a594df79ddc1cc96.png#pic_center 安装 按以下步骤安装 红色波浪…

【洛谷随机挑战系列】第一期:徒手计算质数表,你敢相信?

目录 前言 准备环节 随机程序公示 随机结果公示 ​编辑做题环节 解读题目 思路点拨 AC代码

UEC++ 探索虚幻5笔记 day11

虚幻5.2.1探索 项目目录探索 C工程一定不能是中文路径&#xff0c;中文项目名&#xff0c;最好全部不要用中文&#xff0c;蓝图项目可以是中文浅浅创建一个空项目&#xff0c;讲解一下之前UE4没有讲解的项目目录文件的分布组成 .vs&#xff1a;文件夹一般是项目编译缓存文件夹…

一维相位解包裹

一维相位解包裹 本文首先介绍最简单的一维的位相解包裹算法。设W是包裹运算符&#xff0c;中是解包裹位相&#xff0c;是包裹的位相。则一维位相解包裹可表示为&#xff1a; 解包裹就是要选取正确的k,满足&#xff1a; 两个相邻像素位相的差值如下&#xff1a; 由式(2-1)和式(2…

C语言——2048完整版

2048是一个简单又有趣的小游戏&#xff0c;相信大家都接触并了解过&#xff0c;那如何通过代码来实现他呢&#xff1f;下面就让我们来一起看看。 目录 1、头文件 2、主函数 3、 StarGame 4、GetNum 5、Show 6、Picture 7、GetButton 8、MergeLeft 9、MergeUp 10、MergeR…