我对 Spring 3 有疑问。任何人都可以告诉我,控制器中的方法如下:
@ModelAttribute("nameAtributte")
public Customer getCustomerInfo(HttpServletRequest request) {
return service.getCustomer(request);
}
是同步的吗?
当然这个方法是不同步的。但我似乎理解你是如何得出这个结论的。我使用了以下代码:
@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
。