遇到一个很奇葩的问题,我的某类 A 作为 Bean 是通过自定义的 FactoryBean 的 getObject() 方法进行创建的。Spring 的默认行为是当调用该 Bean 时,如果 Bean 未载入才调用对应 Bean 的 FactoryBean 的 getObject()。而我的 getObject() 方法的本质是:从本地读 json 文件,而后进行反序列化,这个过程会默认调用类 A 的无参构造器。而我原本是打算在类 A 的无参构造器内通过 SpringContextHolder 来获取另一个 Bean B 的,手误写成了获取 Bean A,这样就导致:试图获取 A -> 发现 A 作为 Bean 未存在 -> 触发 FactoryBean.getObject() -> Json 反序列化 -> 调用 A 无参构造器 -> 构造器内试图获取 A -> 发现 A 作为 Bean 未存在...套娃了,直接栈溢出。这个问题 IDE 和 Spring 都没有任何反应,要不是我在反序列化时加了日志,我压根看不出来。