Web应用程序上下文范围奇怪的行

时间:2016-04-04 11:34:26

标签: java spring spring-mvc scope

在webservice上使用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;
    }
}

我不明白这种行为

1 个答案:

答案 0 :(得分:1)

由于$("#orderby").on('change', function() { if ($('#orderby').val() == 'lowhigh'){ //post here. }else if ($('#orderby').val() == 'default'){ //post here } }); 配置为请求作用域,因此spring会为其创建代理。因此,TSsetName调用将重定向到为每个请求创建的getName实例。但是直接字段引用不能被代理,它只影响注入控制器的实例。