简短的回答是:Spring 中的单例(Singleton)Bean 并不是天生线程安全的。 Spring 框架本身并没有对单例 Bean 进行任何多线程的封装处理。关于单例 Bean 的线程安全问题,完全取决于 Bean 本身的内部设计(即是否带有可变的成员变量)。 下面为您详细拆解其中的原因以及如何处理: 1. Spring 中“单例”的真正含义 Spring 的 (默认作用域)仅仅意味着:在同一个 Spring IoC 容器中,这个 Bean 只会被创建一次,只有一个实例。 在像 Spring Boot Web 这样的并发环境下,所有的 HTTP 请求都会交由 Tomcat 的线程池处理。如果多个线程(请求)同时调用同一个单例 Bean 的方法,它们操作的实际上是内存中的同一个对象。 2. 为什么说它不是线程安全的? 线程安全问题产生的前提是:多个线程同时操作同一个共享的、可变的数据。根据 Bean 的设计不同,分为两种情况: A. 无状态(Stateless)Bean —— 实际上是线程安全的 如果你的 Bean 只是用来执行逻辑,没有定义可以被修改的成员变量(或者成员变量...