【问题标题】:Web application context scope strange behaviorWeb 应用程序上下文范围奇怪的行为
【发布时间】:2016-04-04 11:34:26
【问题描述】:

在 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;                
}

收到的响应是“第一个值和第二个值”。我不明白为什么不是“第二值和第二值”。 ts 是一个请求范围注入变量。代码是:

@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;
    }
}

我不理解这种行为

【问题讨论】:

    标签: java spring spring-mvc scope


    【解决方案1】:

    由于TS 被配置为请求范围,显然spring 会为它创建代理。所以setNamegetName 调用被重定向到为每个请求创建的TS 实例。但是直接的字段引用不能被代理,它只影响注入到控制器的实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-02
      • 1970-01-01
      • 1970-01-01
      • 2020-03-24
      • 1970-01-01
      • 2017-09-12
      • 2014-09-24
      • 1970-01-01
      相关资源
      最近更新 更多