gpt4 book ai didi

spring - 为什么bean(具有请求范围)没有在 Controller 的每个请求中初始化?

转载 作者:行者123 更新时间:2023-12-02 07:23:11 25 4
gpt4 key购买 nike

我的 ActionResponse 代码是:

@Component
@Scope(value = "request",proxyMode = ScopedProxyMode.TARGET_CLASS)
public class ActionResponse{
public int a;
//body
}

我的 Controller :

@Controller
@RequestMapping(value="/ajax/discussion")
public class DiscussionController extends AbstractController {

@Autowired
private ActionResponse actionResponse;

public void setActionResponse(ActionResponse actionResponse) {
this.actionResponse = actionResponse;
}

@RequestMapping("/test")
public @ResponseBody String test(){
String response=this.actionResponse.a+"";
if(this.actionResponse.a==0)
this.actionResponse.a=10;
return response;
}

}

我启动项目,然后第一次请求/ajax/discussion/test 时它显示 0

但此后对于其他请求,它显示 10

由于 ActionResponse 的请求范围,它必须在每个请求中显示 0

问题是:为什么 bean(ActionResponse) 只创建一次而不是在每个请求中创建?!!!

最佳答案

CGLIB 在类级别上工作。

CGLIB代理仍然是单例,因此它继承了基类的字段。当您更改其公共(public)属性时,您也更改了单例的值。

您应该将数据更改封装在公共(public) getter 和 setter 中。

关于spring - 为什么bean(具有请求范围)没有在 Controller 的每个请求中初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13419322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com