在 web 服务上使用 spring 我有这个代码:
@RequestMapping(value = "/testOperation", method = GET)
public String testOperation() throws Exception
{
ts.setName("First Value");
ts.name = "Second Value";
return ts.getName() + " and " + ts.name;
}
收到的响应是“第一值和第二值”。我不明白为什么不是“Second Value and Second Value”。 ts 是一个请求范围注入(inject)变量。代码是:
@Component
@Scope(value=WebApplicationContext.SCOPE_REQUEST, proxyMode=ScopedProxyMode.TARGET_CLASS)
public class TS implements Serializable{
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我不理解这种行为
最佳答案
由于 TS
被配置为请求范围,显然 spring 为它创建了代理。因此 setName
和 getName
调用被重定向到为每个请求创建的 TS
实例。但是不能代理直接字段引用,它只影响注入(inject)到 Controller 的实例。
关于java - Web 应用程序上下文范围的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36401494/