默认情况下,Spring Bean 是单例作用域,也就是同一个容器里同一个 Bean 定义只创建一份实例。
默认单例是什么意思
这里的单例是指 Spring 容器级别的共享实例,不是整个 JVM 全局唯一。你多次注入同一个 Bean,默认拿到的都是同一个对象。
什么时候不是单例
如果显式声明 prototype,Spring 每次获取 Bean 时都会创建新对象。Web 场景下还会有 request、session 等作用域。
为什么默认选单例
大多数业务服务本身就是无状态的,做成单例更节省内存,也更符合依赖注入容器的管理方式。
使用时要注意什么
如果单例 Bean 里保存可变状态,就可能出现线程安全问题。默认单例没问题,前提是 Bean 设计本身尽量无状态。
正文完



