SpringMVC的Controller层在并发环境下如何实现安全保障?

会不会出现多个线程同时等待控制器的某一个方法的情况,为什么?

@Controller在Spring中默认是单例的,但是只要控制器中不出现成员变量(全局变量)、静态变量,线程就是安全的,可以参考一下:controller线程安不安全

另外对于你说的多个线程同时等待控制器的某一个方法,我在实践中看下来是不会的,根据我个人经验,只要网络不阻塞,controller可以一下子接收很多很多请求,每个请求各自去调用自己的服务层处理业务,不会出现说下一个请求来了必须等待上一个请求完成这种情况。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-04-26
有几种解决方法:
1、在控制器中不使用实例变量
2、将控制器的作用域从单例改为原型,即在spring配置文件Controller中声明 scope="prototype",每次都创建新的controller
3、在Controller中使用ThreadLocal变量
不会出现多个线程同时等待控制器的某一个方法的情况,只是单例并不是加锁

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网