SpringBoot拦截器中使用RedisTemplate

这几天想着把登陆拦截器的验证规则修改一下,验证介质由session中获取改为从redis中获取,结果发现redisTemplate一直为空,

@Configuration
public class WebInterceptorConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {//这种方式会拦截所有请求registry.addInterceptor(new MyInterceptor());//这种方式会拦截指定的请求
//        registry.addInterceptor(new MyInterceptor()).addPathPatterns("/helloInterceptor");}
}

上面是修改之前的拦截器代码,很简单,下面是拦截器部分的代码

public class MyInterceptor implements HandlerInterceptor {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;@Overridepublic boolean preHandle(HttpServletRequest request, @NotNull HttpServletResponse response, Object handler) throws Exception {//自定义拦截规则}}

可以看到这里使用了ioc自动注入的方式来获取我们预定义好的RedisTemplate对象,但是在调试的过程中失败了,发生了NPE

仔细一想,拦截器在SpringContext初始化之前就执行了,Bean初始化之前它就执行了,所以它肯定是无法获取SpringIOC容器中的内容的。那么我们就让拦截器执行的时候实例化拦截器Bean,在拦截器配置类里面先实例化拦截器,然后再获取就能解决这个问题啦。

下面是修改过后的代码:

public class WebInterceptorConfig implements WebMvcConfigurer {@Beanpublic MyInterceptor getLoginHandlerInterceptor(){return new MyInterceptor();}@Overridepublic void addInterceptors(InterceptorRegistry registry) {//这种方式会拦截所有请求registry.addInterceptor(getLoginHandlerInterceptor());}
}

项目启动,完美解决!

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

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

相关文章

源码知识付费系统,在线教学平台需要优化什么?

在线教育关于广大的关注者而言属于快捷度非常高的传达途径&#xff0c;尤其是白日没有过多时间的上班族或学习繁忙的学生&#xff0c;均能够通过可靠的在线教育完结自己的目的。如此巨大的市场潜力使得以在线教育为主的公司数量呈现出直线上升的趋势&#xff0c;很多的在线教育…

零基础掌握Kafka

Apache Kafka是当前最流行的分布式流处理平台之一&#xff0c;由LinkedIn开发并于2011年开源。它被设计用于高吞吐量、低延迟的场景&#xff0c;广泛应用于日志收集、流处理、事件源等多种场合。本文将带你从零开始学习Kafka&#xff0c;并通过Java代码示例展示如何发送消息。 …

scrapy的入门

今天我们先学习一下scrapy的入门,Scrapy是一个快速的高层次的网页爬取和网页抓取框架&#xff0c;用于爬取网站并从页面中提取结构化的数据。 1. scrapy的概念和流程 1.1 scrapy的概念 我们先来了解一下scrapy的概念,什么是scrapy: Scrapy是一个Python编写的开源网络爬虫框架…

AI学习指南概率论篇-贝叶斯推断

AI学习指南概率论篇-贝叶斯推断 概述 在人工智能中&#xff0c;贝叶斯推断是一种基于贝叶斯统计理论的推理方法。它通过使用概率论的知识&#xff0c;结合先验信息和观测数据&#xff0c;来更新对未知变量的推断。贝叶斯推断提供了一种合理的方法来处理不确定性&#xff0c;并…

ubuntu 相关操作

ubunt-desktop卸载重安 sudo apt-get purge ^gnome-.* sudo apt-get autoremove --purge sudo apt-get update sudo apt-get install ubuntu-desktop清理 # 检查日志大小 journalctl --disk-usage# 只保留一周的日志 sudo journalctl --vacuum-time1w# 只保留500MB的日志 …

JS遍历数组的十种方法总结

​​​ 目录 一、for 循环遍历 二、for ... of 方法 三、for...in循环 四、forEach 遍历 五、map 映射 六、filter方法 七、reduce高阶函数&#xff08;迭代&#xff08;累加器&#xff09;&#xff09; 八、every 九、some 十、find 一、for 循环遍历 for循环是最…

Mac 双网卡

Mac 使用了双网卡, 一个网线, 一个WIFI. 局域网走一个网卡, ip 段是 192.168.10.0/24外网走一个网卡, ip 段是 192.168.50.0/24 1. 添加静态路由 为局域网添加静态路由, 192.168.10.0/24 无需为自己这个段添加静态路由. 在局域网中, 如果还有其他的网段(例如 192.168.20.0/…

WebSocket前后端建立以及使用

1、什么是WebSocket WebSocket 是一种在 Web 应用程序中实现双向通信的协议。它提供了一种持久化的连接&#xff0c;允许服务器主动向客户端推送数据&#xff0c;同时也允许客户端向服务器发送数据&#xff0c;实现了实时的双向通信。 这部分直接说你可能听不懂&#xff1b;我…

王麻子1651商标被王麻子跨类无效宣告!

近日“王麻子1651”商标被王麻子跨类无效宣告&#xff0c;最后不予注册&#xff0c;普推知产老杨了解“王麻子”是我国著名的老字号&#xff0c;创始于1651年&#xff0c;以刀剪闻名于世&#xff0c;刀剪的商标分类主要是在8类手工器械&#xff0c;而被无效宣告的商标在16类办公…

手机电脑通用便签推荐 好用便签下载

便签软件作为一种日常记录和管理工具&#xff0c;其实用性和便捷性深受用户喜爱。一款优秀的便签软件不仅能帮助我们随时随地记录重要信息&#xff0c;还能有效提高工作效率。然而&#xff0c;市场上很多便签应用仅限于单一平台使用&#xff0c;对于需要在手机和电脑间频繁切换…

游戏行业该如何选择适合的服务器?

游戏行业在互联网社会中发展的越来越好&#xff0c;当然每一款游戏的运行都是需要强大的服务器来支撑的&#xff0c;那么选择一个好的服务器会给企业带来更好的成果&#xff0c;今天万恒小编就来带大家去了解一下再游戏行业中怎样去选择合适的服务器。 首先在游戏这个行业中&am…

python pymysql怎么查询一列的数据

要使用Python的pymysql库查询MySQL数据库中一列的数据&#xff0c;你需要首先安装pymysql库&#xff08;如果尚未安装&#xff09;&#xff0c;然后建立与数据库的连接&#xff0c;并执行SQL查询语句。以下是一个简单的例子&#xff1a; 首先&#xff0c;安装pymysql库&#x…

如何到《新英格兰医学杂志》 NEJM查找下载文献

《新英格兰医学杂志》NEJM是世界上阅读、引用最广泛、影响力最大的综合性医学期刊之一。NEJM集团出版的期刊还包括NEJM Journal Watch、NEJM Catalyst及NEJM Evidence。NEJM是一份全科医学周刊&#xff0c;出版对生物医学科学与临床实践具有重要意义的一系列主题方面的医学研究…

《墨菲定律》读后感

《墨菲定律》这本书的书名有很大的迷惑性&#xff0c;因为墨菲定律的占幅不到全书的百分之一。这本书比较系统地总结了一些耳熟能详的可称之为人类社会运行的规律和法则&#xff0c;虽然书的内容还是多少有点“心灵鸡汤”的感觉&#xff0c;但好在涉及的范围足够广&#xff0c;…

ECS中播放 Animator 动画和控制Gameobject 显示状态

1、要在 ECS&#xff08;Entity Component System&#xff09;中播放 Animator 动画&#xff0c;需要先创建一个包含 Animator 组件的 Entity&#xff0c;并在相应的 System 中更新该 Entity 的 Animator 组件。以下是一个简单的示例代码&#xff1a; using Unity.Entities; us…

目标检测YOLO实战应用案例100讲-基于深度学习的交通场景多尺度目标检测算法研究与应用(中)

目录 3.4 实验结果与分析 深度融合注意力跨尺度复合空洞残差交通目标检测算法

漫谈:C C++ 嵌套包含与前置声明

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 目录 嵌套包含导致无限 要有…

盛邦安全拟战略收购卫星通信加密厂商天御云安

近日&#xff0c;远江盛邦&#xff08;北京&#xff09;网络安全科技股份有限公司&#xff08;以下简称“盛邦安全”&#xff0c;股票代码:688651)对外公布&#xff0c;拟使用自有资金不超过人民币3000万元持有北京天御云安科技有限公司&#xff08;以下简称“天御云安”&#…

electron 视频抓图并保存图片到本地

1. 思路&#xff1a; 1.1 通过canvas生成一块画布&#xff0c;在画布上绘制图形 let videoEl document.getElementById("testVideo");let params {videoEl,quality:0.95}let canvasEl document.createElement(canvas);canvasEl.width videoEl.width;canvasEl.he…

开启多线程下变量共享与私有问题

开启多线程下变量共享与私有问题 &#x1f335;ThreadLocal和Atomic是Java中用于多线程编程的两个重要工具。 ThreadLocal是一个线程局部变量&#xff0c;它为每个线程提供了独立的变量副本&#xff0c;确保每个线程都可以访问自己的变量副本而不会影响其他线程的变量。在多线…