Я использую spring более 6 месяцев. Я не могу понять этот базовый механизм, связанный с приведенным ниже сценарием.
У меня есть веб-приложение spring. Теперь я смонтировал модель в контроллере. На основе соответствия url он вызывает соответствующий метод. все мои методы однотонные.
Теперь, когда два пользователя открывают приложение одновременно, spring может запускать их параллельно и давать им результаты. Я не понимаю, как это можно сделать. Я имею в виду, что в качестве bean используется односторонний режим, который должен либо ждать, пока bean не будет использоваться, либо не перезапишет данные в bean. Но spring работает правильно. Может кто-то объяснить это поведение с некоторой аналогией.
Чтобы четко объяснить мой вопрос ниже, это фрагмент кода:
Мой контроллер по умолчанию прост:
@Autowired
private AppModel aModel;
public AppModel getModel(){
return aModel;
}
public void setModel(AppModel aModel){
this.aModel = aModel;
}
@RequestMapping(method = RequestMethod.GET)
public ModelAndView defaultGetter(HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView(getViewName());
mav.addObject("model", aModel);
Runtime.getRuntime().gc();
return mav;
}
Также может кто-нибудь сказать мне, когда два клиента откроют приложение, будут созданы две отдельные модели, когда я буду использовать @autowired. Если для всех клиентов существует только одна модель bean, тогда скажем, что запрос от клиента 1 пришел, и мне понадобилось 30 секунд, чтобы вернуть результаты. Теперь, если второй клиент отправляет запрос в 3-й секунде, будет ли первый запрос клиентов перезаписан?
Я думаю, что смущаюсь. Может ли кто-нибудь объяснить, как происходит эта магия?
Спасибо