Springmvc中在controller注入request会有线程安全问题吗

如题所述

第1个回答  2016-07-30
首先,原则上 Request 不可以定义为 Controller 的成员,因为二者的生命周期实在是完全脱节的,这样子弄只会造成 Controller 无法调用到正确的 Request 对象。
其次 @Autowire 是一次性赋值的,而 Request 对象有无数多个,所以你这样写的话,Spring 也会不知该如何是好。因为应用启动的时候根本没有 Request 对象,所以这样应该会导致启动失败。
第2个回答  2016-07-30
controller默认是单例 需要的数据都从方法参数传递 只要不定义类变量 就安全 放心吧

@Controller
@RequestMapping("/fui")
public class FuiController extends SpringController {

这么定义的话就是单例

@Controller
@Scope("prototype")
@RequestMapping("/fui")
public class FuiController extends SpringController {
每次都创建

@Controller
@Scope("session")
@RequestMapping("/fui")
public class FuiController extends SpringController {
一个会话创建一个本回答被提问者采纳

Springmvc中在controller注入request会有线程安全问题吗
controller默认为单例的,但是每个请求会启动一个线程处理:全局变量会被共享,存在安全问题;每个方法内的变量不会有同步问题,注入request是线程安全的。

Springmvc中在controller注入request会有线程安全问题吗
直接在Controller的成员变量上使用@Autowire声明HttpServletRequest,这是线程安全的!Controller public class TestController{ Autowire HttpServletRequest request;RequestMapping("\/")public void test(){ request.getAttribute("uid");}

Spring MVC的Controller是线程安全的么
Spring MVC默认是单例,所以是线程不安全的,但是由于是可以配置的,你可以把Controller配置成多例(Scope)的,这样就是线程安全的。判断线程安全就是会不会同时有两个或者多个线程访问到一个对象中的某个属性或者方法,如果是单例,就是说两个线程会同时获取一个对象,如果其中一个线程修改了这个对象的...

spring mvc 单例是怎么保证线程安全的
SpringMVC和Struts2中是并发访问否会存在线程安全问题。对于使用过SpringMVC和Struts2的人来说,大家都知道SpringMVC是基于方法的拦截,而Struts2是基于类的拦截。对于Struts2来说,因为每次处理一个请求,struts就会实例化一个对象;这样就不会有线程安全的问题了;而Spring的controller默认是Singleton的,这意...

怎样保证线程安全?
通常没有必要同步整个方法,使用synchronized代码块同步关键代码即可。 怎样保证线程安全,程序运行 只需要两个线程和一个数据缓存链。 线程1:图片采集线程,不停的采集数据,放到数据链里缓存 php如何保证线程安全 线程安全本身在php 的运行原理上就做到了,每个请求重新分配的内存空间,所谓php 的现线程安全,指的是 php...

springbean线程安全问题(spring如何解决线程安全)
Prototype作用域的bean会导致在每次对该bean请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)时都会创建一个新的bean实例。根据经验,对有状态的bean应该使用prototype作用域,而对无状态的bean则应该使用singleton作用域。 3)request 在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求...

springboot如何把HttpServletRequest传入到controller
返回的是RequestContextHolder里的值. 追踪RequestContextHolder 每次返回的其实是, RequestAttributes的实现类ServletWebRequest(ServletRequestAttributes)里的request. 因为RequestAttributes是属于threadLocal的,所以注入的request也是线程安全的了 HttpServlet实现类 FrameworkServlet-> service()->processRequst()...

Spring MVC controller中,使用redirect重定向后却无法传递session的属...
提供的线索无法判断出问题所在。可以肯定,无论何种提交,session中的参数是一定可以传的,如果你看不到,那只是你看不到而已,是别的地方写错了,不是redirect的问题!信我,一定是别的地方错了。

springmvc controller 的继承问题
这种情况下的baseController里 ,不会做RequestMapping 也就是web请求不会直接到这个父类,这种继承是不会有任何问题的。如 当有些业务的controller 也需要被继承呢,类似这种 带有requestMapping 注解 如果我们写一个这样的业务类来继承它 那么就会有惊喜 简单说 就会告诉你 模糊的映射 也就是无法确定...

SpringMVC中Controller处理response.setContentType()
在SpringMVC中,当使用Controller处理request并设置response.setContentType("application\/json;charset=UTF-8")以输出中文时,发现结果仍然为乱码。此类问题的异常现象通常源于源码内部的特殊处理,导致通过该方法设置的请求头编码无效。SpringMVC通过RequestMappingHandlerAdapter处理注解定义的请求处理器方法。在该类...

相似回答