spring bean 循环依赖问题,在本地环境可以,测试环境报循环依赖问题

为什么在本地可以,上了测试环境就不行,或者上了生产环境就不行了?

答:根源在于在不同的操作系统或者环境下, bean 的加载顺序是不固定的。bean 加载顺序变化之后,就可能会导致循环依赖报错问题产生!因为,顺序变化之后,循环依赖的主体变了!
bean 加载时,会先将所有的 BeanDefinition 扫描出来,扫描出来的顺序基本上就决定了 bean 的加载顺序。
扫描 BeanDefiniton 的方法是 ClassPathScanningCandidateComponentProvider#scanCandidateComponents(),这个方法在不同的环境下扫描出类的顺序是不固定的。
它的底层走的是 java.lang.ClassLoader#getResources() ,这个方法没有承诺获取到资源文件的顺序

Original: https://www.cnblogs.com/kevin-yuan/p/14764551.html
Author: 快鸟
Title: spring bean 循环依赖问题,在本地环境可以,测试环境报循环依赖问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/540331/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 异常(Java)

    异常 基本介绍 什么是异常? 在实际工作中,遇到的情况不可能是非常完美。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在或者文件格式不对…

    Java 2023年6月9日
    070
  • Caffeine缓存框架入门学习

    Caffeine缓存框架入门学习和常用API 引入依赖 com.github.ben-manes.caffeine caffeine 2.5.5 基础创建方式 Cache cach…

    Java 2023年6月13日
    082
  • mybatis总结

    第一步 第二步 <build>        <resources>       &#…

    Java 2023年6月7日
    069
  • jdk8系列一、jdk8 Lamda表达式语法、接口的默认方法和静态方法、supplier用法

    一、简介 在本文中我们将学习这些新特性,并用实际的例子说明在什么场景下适合使用。 包含Java开发者经常面对的几类问题: 语言 编译器 库 工具 运行时(JVM) 二、Lambda…

    Java 2023年5月30日
    087
  • 老生常谈系列之Aop–Aop的经典应用之Spring的事务实现分析(一)

    老生常谈系列之Aop–Aop的经典应用之Spring的事务实现分析(一) 前言 前面的系列文章已经大概讲解了Spring Aop的实现,从AspectJ开始,到Spri…

    Java 2023年6月8日
    090
  • Kafka 概述

    kafka 是一个为事件流而生的分布式消息系统,广泛应用于网页用户记录跟踪,IOT 设备,日志采集,系统监控等场景。 kafka 是用于构建实时数据管道和流应用程序。具有横向扩展,…

    Java 2023年6月8日
    096
  • Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十四):权限控制(Shiro 注解)

    在线演示 用户名:admin 密码:admin 技术背景 当前,我们基于导航菜单的显示和操作按钮的禁用状态,实现了页面可见性和操作可用性的权限验证,或者叫访问控制。但这仅限于页面的…

    Java 2023年5月30日
    093
  • 对象-一论

    创建与初始化对象 在程序里,使用 new关键字创建类的对象,格式: classType className = new classType()。在使用new的同时,也在内存中为该对…

    Java 2023年6月5日
    081
  • 什么是死锁?如何避免死锁?

    概念 线程死锁描述的是这样一种情况:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。 我和同学都打扫卫生,我拿着扫帚…

    Java 2023年6月15日
    074
  • Markdown基础语法

    Markdown语法 ## 欢迎使用Markdown编辑器 你好! 这是你第一次使用 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下M…

    Java 2023年6月7日
    096
  • Java-Dubbo学习及整合SpringBoot

    Dubbo是Java的RPC框架,具有三大核心功能:面向接口的远程方法调用,智能容错和负载均衡,以及服务的自动注册和发现 Dubbo架构图: 节点角色说明: 节点 说明 Provi…

    Java 2023年6月8日
    081
  • clash TUN模式

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月16日
    091
  • Mall商城的高级篇的开发(二)性能压测和性能监控

    Mall商城的高级篇的开发(二) 性能压测–压力测试 压力测试考察当前软件硬件环境下系统所能承受的最大负荷并帮助找出系统的瓶颈所在。压测都是为了系统在上线的处理能力和稳…

    Java 2023年6月5日
    094
  • 译文《全新首发JDK 16全部新特性》

    封面:洛小汐 译者:潘潘 JDK 8 的新特性都还没摸透,JDK 16 的新特性就提着刀来了。 郑重申明:第一次冒险翻译专业领域的文献,可想而知,效果特别糟糕。一般翻译文献特别是 …

    Java 2023年6月13日
    050
  • 踩到一个关于分布式锁的非比寻常的BUG!

    你好呀,我是歪歪。 提到分布式锁,大家一般都会想到 Redis。 想到 Redis,一部分同学会说到 Redisson。 那么说到 Redisson,就不得不掰扯掰扯一下它的&#8…

    Java 2023年6月5日
    063
  • 利用ServletContext,实现Session动态权限变更

    1、前言 很多Spring Boot应用使用了Session作为缓存,一般会在用户登录后保存用户的关键信息,如: 用户ID。 用户名。 用户token。 权限角色集合。 等等。。。…

    Java 2023年6月14日
    076
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球