2

我对 Spring 3 有疑问。任何人都可以告诉我,控制器中的方法如下:

@ModelAttribute("nameAtributte")
public Customer getCustomerInfo(HttpServletRequest request) {
     return service.getCustomer(request);
}

是同步的吗?

4

1 回答 1

1

当然这个方法是不同步的。但我似乎理解你是如何得出这个结论的。我使用了以下代码:

@Controller
@RequestMapping("/url")
public class ModelAtrCotroller {

    @ModelAttribute
    public String modelAtr() {
        return "foo";
    }

    @ResponseBody
    @RequestMapping(method = RequestMethod.GET)
    public String index() {
        return "index";
    }
}

我在方法中放置了一个断点,modelAtr并从同一浏览器的两个不同选项卡向 url 发送了两个请求。而且似乎该方法是同步的,因为直到我在第一次服务期间释放断点才开始服务第二个请求。我假设浏览器使用单个“保持活动”连接,并且第二个请求根本没有从浏览器开始,直到没有收到对第一个请求的响应。

我为两个并发请求使用了两个不同的浏览器,并且两个应用程序服务器线程都在方法中间的同一个断点处暂停modelAtr

于 2013-01-11T16:14:09.383 回答