其他分享
首页 > 其他分享> > spring – 为什么bean(具有请求范围)未在控制器中的每个请求中初始化?

spring – 为什么bean(具有请求范围)未在控制器中的每个请求中初始化?

作者:互联网

我的ActionResponse代码是:

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

我的控制器:

@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代理仍然是单例,因此它继承了基类中的字段.更改其公共属性时,您可以更改单例的值.

您应该将数据更改封装在公共getter和setter中.

标签:spring,spring-mvc,spring-3
来源: https://codeday.me/bug/20190901/1784145.html