网站首页 > 技术教程 正文
首先更正一下,问题出现的原因不是spring单例模式有问题,而是对单例模式使用不当。下面我们来看看遇到了什么问题。
今天业务功能代码提测,测试反馈有一个下拉框的列表出现诡异的情况,一会正序一会倒序,接到bug后,赶紧打开代码,简化后代码如下:
controller
配置
application.yml
本地请求了2次,发现结果确实不一样
第一次请求
第二次请求
结果确实不一样,本次需求改变的是对原来的配置菜单进行倒序排序,为了方便,并没有对application.yml的配置文件进行修改,直接再代码层面添加了Collections.reverse(menus);方法
分析
Collections.reverse(menus)方法本身并没有什么问题,但由于反转的是List<Menu> menus这个对象,在java中对象的赋值,是引用,因此将menus做反转,必然会导致
selectMenuConfig.getMenuList()内容反转。而SelectMenuConfig是单例的,因此必然会修改属性List<Menu> menuList。
因此每次请求都会执行一次反转,从而单例的值被反转,下次取得是反转后得值,再一次执行反转,必然导致请求结果不一样。
解决
既然知道问题了,那么解决问题得方法就很多了。
方法一:修改配置文件顺序
方法二:单例类中添加初始化方法
方法三:配置文件添加排序值,进行排序
等待
猜你喜欢
- 2025-07-06 深度操作系统 Deepin V23 安装最新的 linux 内核
- 2025-07-06 10.开发板与 Windows 共享文件 openwrt入门经典教程
- 2025-07-06 技术帖 | 飞凌嵌入式T113-i开发板的休眠及唤醒操作
- 2025-07-06 Linux文件系统制作与裁剪(linux 文件切割)
- 2025-07-06 Linux系统的移植和裁剪(linux移植lvgl)
- 2025-07-06 瑞芯微RK3568J如何“调节主频”,实现功耗降低?一文教会您!
- 2025-07-06 16.应用程序软件包测试 openwrt入门经典教程
- 2025-07-06 「技术干货」一文搞懂怎么使用Linux内核模块
- 2025-07-06 ELF 1技术贴|如何支持exFAT和NTFS格式
- 2025-07-06 笔记-利用本地配置文件Actions云编译Openwrt
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)