2013-01-11 84 views
2

我和春天有个问题3. 任何人都可以告诉我,方法是这样的控制器:@ModelAttribute是否同步?

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

被同步?

回答

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方法中间的同一个断点处暂停。