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、同じブラウザーの 2 つの異なるタブから URL に 2 つの要求を送信しました。そして、最初のサービング中にブレークポイントを解放するまで、2 番目のリクエストのサービングが開始されなかったため、メソッドは同期されているように見えました。単一の「キープアライブ」接続がブラウザーによって使用され、最初の要求への応答が受信されなくなるまで、2 番目の要求がブラウザーから開始されなかったと仮定します。

modelAtr2 つの同時要求に 2 つの異なるブラウザーを使用し、メソッドの途中で同じブレークポイントで 2 つのアプリケーション サーバー スレッドを一時停止しました。

于 2013-01-11T16:14:09.383 に答える