永发信息网

Spring MVC的Controller是线程安全的么

答案:2  悬赏:0  手机版
解决时间 2021-01-29 22:39
  • 提问者网友:沦陷
  • 2021-01-29 05:50
Spring MVC的Controller是线程安全的么
最佳答案
  • 五星知识达人网友:舍身薄凉客
  • 2021-01-29 07:16
SpringMVC 是基于单例模式的,所以如果有类的实例全局变量,这个会出现问题。但是根据SpringMVC的设计要求,不推荐存在全局变量,出现的类引用也不过是Service层中的对象,这个对象不具备保存请求数据信息的功能,如果有保存信息也直接传入了函数内部。函数内部定义的变量时线程安全的。所以应该是可以放心使用的。SpringMVC和Sturts2设计的不同是请求的信息是否保存才Controller层中。Struts2的Action是需要保存请求信息的。而SpringMVC是不保存的。所以Struts2是用prototype,SpringMVC是singleton。

整体来说,SpringMVC的Controller是线程不安全的,但是对设计有规定要求,这样可以避免线程安全问题。不只是Controller,包括Service和Dao都是不安全的。
全部回答
  • 1楼网友:琴狂剑也妄
  • 2021-01-29 07:23
默认线程不安全。 spring mvc默认注册bean都是单例模式,即:@scope("singleton"),所有线程调用的都是同一个实例对象,所以线程不安全。不过可以手动指定javabean的scope为多例,即:@scope("prototype"),每个线程调用都会重新实例化一个对象,这样就线程安全了。 @controller @scope("prototype") @requestmapping("/user") public class usercontroller {     // ... }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯