【问题随记】在使用 AuthenticationManager 的时候,出现循环依赖问题 —— `java.lang.StackOverflowError`
问题随记
在使用 AuthenticationManager 的时候,出现循环依赖问题 —— java.lang.StackOverflowError,查资料查了两天半,终于找到原因。
2024-06-16T17:54:19.487+08:00 ERROR 20672 --- [nio-8789-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed: java.lang.StackOverflowError] with root causejava.lang.StackOverflowError: nullat java.base/java.lang.ref.Reference.refersToImpl(Reference.java:375) ~[na:na]at java.base/java.lang.ref.Reference.refersTo(Reference.java:366) ~[na:na]at java.base/java.lang.reflect.AccessibleObject.isAccessChecked(AccessibleObject.java:664) ~[na:na]at java.base/java.lang.reflect.AccessibleObject.verifyAccess(AccessibleObject.java:695) ~[na:na]at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:673) ~[na:na]at java.base/java.lang.reflect.Method.invoke(Method.java:560) ~[na:na]at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) ~[spring-aop-6.0.4.jar:6.0.4]at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:211) ~[spring-aop-6.0.4.jar:6.0.4]at jdk.proxy2/jdk.proxy2.$Proxy74.authenticate(Unknown Source) ~[na:na]at jdk.internal.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) ~[na:na]at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) ~[spring-aop-6.0.4.jar:6.0.4]at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:211) ~[spring-aop-6.0.4.jar:6.0.4]at jdk.proxy2/jdk.proxy2.$Proxy74.authenticate(Unknown Source) ~[na:na]at jdk.internal.reflect.GeneratedMethodAccessor5.invoke(Unknown Source) ~[na:na]at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) ~[spring-aop-6.0.4.jar:6.0.4]at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:211) ~[spring-aop-6.0.4.jar:6.0.4]at jdk.proxy2/jdk.proxy2.$Proxy74.authenticate(Unknown Source) ~[na:na]……

问题解决
在查找很多资料以及再次复现代码后,终于找到问题,问题出在自己实现的 MyUserDetailsServiceImpl 没有继承 UserDetailsService,才导致该问题。

让 MyUserDetailsServiceImpl 使用 UserDetailsService 该接口或者让 MyUserDetailsServiceImpl 使用的 MyUserDetailsService 继承 UserDetailsService 接口即可
// 方法 1
@Service
public class MyUserDetailsServiceImpl implements MyUserDetailsService, UserDetailsService {@Autowiredprivate UserService userService;@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {UserEntity user = userService.findByUsername(username);if (user == null) {throw new UsernameNotFoundException("User not found");}return new SecurityUser(user);}
}// 方法 2
public interface MyUserDetailsService extends UserDetailsService {UserDetails loadUserByUsername(String username) throws UsernameNotFoundException;
}
出现该问题的原因可能不止这一个,比如使用两种登录机制出现该问题就要使用 @Lazy 来解决该问题
相关文章:
【问题随记】在使用 AuthenticationManager 的时候,出现循环依赖问题 —— `java.lang.StackOverflowError`
问题随记 在使用 AuthenticationManager 的时候,出现循环依赖问题 —— java.lang.StackOverflowError,查资料查了两天半,终于找到原因。 2024-06-16T17:54:19.48708:00 ERROR 20672 --- [nio-8789-exec-1] o.a.c.c.C.[.[.[/].[dispatcherS…...
2024年华为杯-研赛F题论文问题一二讲解+代码分享
X射线脉冲星光子到达时间建模 摘要 脉冲星是一类高速自转的中子星,其自转形成规律性脉冲信号,类似于“宇宙中的灯塔”,因此被认为是极为精确的时钟。X射线脉冲星导航利用脉冲星信号为航天器提供时间和空间参考。通过比较脉冲信号到达航天器…...
代码随想录训练营第34天|dp前置转移
62. 不同路径 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m,vector<int>(n,1));for(int i1; i<m;i){for(int j1; j<n; j){dp[i][j]dp[i-1][j]dp[i][j-1];}}return dp[m-1][n-1];} }; dp[i][j]:运动至(i,j)的方…...
乐观锁、悲观锁
一、悲观锁 悲观锁 (Pessimistic Locking),具有强烈的独占和排他特性。它指的是对数据被外界修改持保守态度。因此,在整个执行过程中,将处于锁定状态。所以,悲观锁是一种悲观思想,它总认为最坏的情况可能会出现&#x…...
Java客户端SpringDataRedis(RedisTemplate使用)
文章目录 ⛄概述⛄快速入门❄️❄️导入依赖❄️❄️配置文件❄️❄️测试代码 ⛄数据化序列器⛄StringRedisTemplate⛄RedisTemplate的两种序列化实践方案总结 ⛄概述 SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模…...
wsl2桥接网络 ubuntu到弃坑到又跳坑
搜索Hyper-V image.png 如下图进入虚拟交换机管理器 image.png image.png C:\Users\Administrator下存放 ; 这是 WSL 2 的配置文件 [wsl2] processors4 ; 设置 WSL 2 可以使用的最大 CPU 核心数为 4,自行修改 memory4GB …...
WIFI路由器的套杆天线简谈
❝本次推文简单介绍下WIFI路由器的套杆天线。 路由器天线 路由器在这个万物互联的时代,想必大家对其都不陌生。随着科技的发展,常用的路由器上的天线也越来越多,那么问题来了:天线越多,信号越好吗?路由器…...
希尔排序(C语言实现)
目录 1.希尔排序( 缩小增量排序 ) 2.动图 编辑 3.代码实现 预排序实现 子序列排列实现 单趟排序实现 对整组数进行子排序 希尔排序代码 代码测试 时间复杂度分析 希尔排序的特性总结: 1.希尔排序( 缩小增量排序 ) 基本思想: 1.先选定一个…...
LLVM 中的Value、User、Use设计
概述 LLVM是一个强大的编译器基础设施,提供了一套丰富的库,用于构建编译器的前端和后端。在LLVM中,Value、User和Use是几个核心的概念,它们之间有着紧密的关系 Value Value是LLVM中表示所有可计算的值的基类,例如常…...
C++智能指针入门教程(C++11)
智能指针 1.定义 C中的智能指针是一种用于自动管理动态分配的内存的模板类,它们通过封装原始指针来提供自动的内存管理功能,从而避免了内存泄漏和悬挂指针等问题。C标准库中提供了几种智能指针类型,其中最常用的是std::unique_ptr、std:…...
常用工具推荐!分享7款AI论文修改软件工具网站
在当今学术研究和写作领域,AI论文修改软件工具已经成为了不可或缺的助手。这些工具不仅能够帮助研究人员提高写作效率,还能确保论文的质量和原创性。以下是七款值得推荐的AI论文修改软件工具网站,其中特别推荐千笔-AIPassPaper。 1. 千笔-AI…...
怎么解除BitLocker对磁盘的加密?
BitLocker是一种Windows操作系统内置的加密功能,用于保护用户的数据安全。它通过对整个磁盘进行加密,防止数据被未经授权的用户访问。BitLocker主要用于保护笔记本电脑和台式机中的重要数据,尤其是在设备丢失或被盗的情况下。怎么解除BitLock…...
群晖使用Docker部署WPS Office并实现异地使用浏览器制作办公文档
文章目录 前言1. 本地环境配置2. 制作本地分享链接3. 制作公网访问链接4. 公网ip地址访问您的分享相册5. 制作固定公网访问链接 前言 想象一下这个场景:如果遇到周末紧急需要改方案,但团队成员都在各自家中,这个时候如果大家能够轻松访问这个…...
Unity3d 以鼠标位置点为中心缩放视角(正交模式下)
思路整理: 缩放前: 缩放后: 记录缩放前鼠标的屏幕坐标 A,计算鼠标位置对应的世界坐标 A_world 缩放完成后,根据当前屏幕下A所对应的世界坐标A1_world 计算A1_world 和 A_world 的偏移量 移动摄像机 代码ÿ…...
Git清除某文件所有历史提交记录
一、软件要求 1.1 软件版本要求 git > 2.22.0python3 > 3.5 1.2 辅助插件 git filter-repo Linux/macOS # Debian/Ubuntu 系统 # 或使用 pip 安装pip install git-filter-repo sudo apt install git-filter-repo Windows pip install git-filter-repo二、操作步骤…...
jacoco生成单元测试覆盖率报告
前言 单元测试是日常编写代码中常用的,用于测试业务逻辑的一种方式,单元测试的覆盖率可以用来衡量我们的业务代码经过测试覆盖的比例。 目前市场上开源的单元测试覆盖率的java插件,主要有Emma,Cobertura,Jacoco。具体…...
【CSS Tricks】如何做一个粒子效果的logo
效果展示 代码展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>粒子效果Logo</title>…...
如何使用ssm实现基于Javaweb的网上花店系统的设计与实现
TOC ssm653基于Javaweb的网上花店系统的设计与实现jsp 研究背景 自计算机发展以来给人们的生活带来了改变。第一代计算机为1946年美国设计,最开始用于复杂的科学计算,占地面积、开机时间要求都非常高,经过数十几的改变计算机技术才发展到今…...
Elastic 的 OpenTelemetry PHP 发行版简介
作者:Pawel Filipczak 宣布 OpenTelemetry PHP 的 Elastic 发行版的第一个 alpha 版本。在本篇博文中了解使用 OpenTelemetry 来检测 PHP 应用程序是多么简单。 我们很高兴推出 OpenTelemetry PHP 的 Elastic Distribution 的第一个 alpha 版本。在这篇文章中&…...
TCP 和 UDP 协议的区别?
参考TCP 和 UDP的区别_tcp和udp的区别-CSDN博客...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
