Springmvc controller 是单例的线程不安全的

本文探讨了Spring MVC Controller默认的单例模式及其线程安全性。由于性能考虑和通常无需在Controller中定义全局变量,单例模式被广泛采用。然而,若在Controller中定义了共享状态,可能会导致线程安全问题。解决方法是通过@Scope("prototype")注解切换到原型模式。在实际应用中,避免在Controller中声明全局变量,单例模式通常能满足需求。
摘要由CSDN通过智能技术生成

Springmvc controller 是单例的线程不安全的

当时有这么一个面试题 随手记录一下了;
spring的controller默认是单例的。

spring的bean作用域有5个,如下:

singleton:单例模式,当spring创建applicationContext容器的时候,spring会初始化所有的该作用域实例,加上lazy-init就可以避免预处理。

prototype:原型模式,每次通过getBean获取该bean就会产生一个新的实例,创建后spring将不再对齐进行管理。

request:每次请求都会产生一个新的实例,和prototype不同的是,创建以后spring依然在监听。

session:每次会话,同上。

spring的controller默认是单例,原因有二:

(1)为了性能:单例不用每次都创建

(2)不需要多例:只要controller中不定义属性,那么单例完全是安全可用的,如果定义了,那单例肯定会出现竞争访问;非要定义,则通过注解@Scope(“prototype”),将其设置为多例模式。

我们实际生产中很少存在在controller中声明全局变量。所以单例完全够用的了;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值