这是一个非常经典且高频的面试题。直接给出结论: 1. Spring MVC 默认是单例(Singleton)的。 2. 是的,存在线程安全问题。 下面详细解释为什么,以及如何解决。 --- 1. 为什么默认是单例? 在 Spring 容器中,Bean 的作用域(Scope)默认就是 。对于 Spring MVC 的 Controller 而言,默认也是单例。 原因主要有两点: 性能优势: 单例模式下,Controller 实例在容器启动时初始化一次。后续的所有请求都由这同一个实例处理,避免了每次请求都创建和销毁对象的开销(内存分配、垃圾回收等),大大提高了性能。 资源节约: 减少了内存占用,特别是在高并发场景下,如果每个请求都创建一个 Controller,内存压力会非常大。 2. 为什么存在线程安全问题? 因为 Controller 是单例的,这意味着所有的 HTTP 请求都会并发地访问同一个 Controller 对象。 Web 容器(如 Tomcat)是多线程的,每一个请求都会分配一个独立的线程。 如果多个线程同时调用同一个 Controller 实例的方法,并且该 Con...