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

2025-05-04 08:22:30
推荐回答(2个)
回答(1):

首先,原则上 Request 不可以定义为 Controller 的成员,因为二者的生命周期实在是完全脱节的,这样子弄只会造成 Controller 无法调用到正确的 Request 对象。
其次 @Autowire 是一次性赋值的,而 Request 对象有无数多个,所以你这样写的话,Spring 也会不知该如何是好。因为应用启动的时候根本没有 Request 对象,所以这样应该会导致启动失败。

回答(2):

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 {
一个会话创建一个