Весенним бобом по умолчанию считается синглетон. Так что бин синглтоне весной - это действительно один объект на контейнер IOC. Фактически все веб-ресурсы поддерживаются в webApplicationContext.
WebApplicationContext является расширением простого ApplicationContext, который имеет некоторые дополнительные функции, необходимые для веб-приложений. WebApplicationContext привязан к вашему ServletContext .
Весной mvc, когда вы определяете что-то вроде ниже:
<web-app>
<servlet>
<servlet-name>golfing</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>golfing</servlet-name>
<url-pattern>/golfing/*</url-pattern>
</servlet-mapping>
</web-app>
На мгновение, если вы забыли, что используете Spring, это фактически определение сервлета в web.xml.
После того, как вы настроили DispatcherServlet и поступил запрос для этого конкретного DispatcherServlet, DispatcherServlet начинает обрабатывать запрос следующим образом:
- WebApplicationContext ищется и связывается в запросе как атрибут, который контроллер и другие элементы процесса могут использовать. По умолчанию он связан с ключом DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE.
- Средство распознавания языковых стандартов привязано к запросу, чтобы разрешить элементам процесса разрешать языковой стандарт, используемый при обработке запроса (отображение, подготовка данных и т. Д.). Если вам не нужно разрешение локали, оно вам не нужно.
- Средство разрешения тем связано с запросом, чтобы элементы, такие как представления, определяли, какую тему использовать. Если вы не используете темы, вы можете игнорировать их.
- Если вы укажете многочастный преобразователь файлов, запрос проверяется на наличие множественных частей; если найдены множественные части, запрос помещается в MultipartHttpServletRequest для дальнейшей обработки другими элементами в процессе
- Поиск соответствующего обработчика. Если обработчик найден, цепочка выполнения, связанная с обработчиком (препроцессоры, постпроцессоры и контроллеры), выполняется для подготовки модели или рендеринга.
- Если модель возвращается, представление отображается. Если модель не возвращается (может быть из-за того, что препроцессор или постпроцессор перехватил запрос, возможно, по соображениям безопасности), представление не отображается, поскольку запрос уже мог быть выполнен.
У Spring очень хорошая документация. Вы должны прочитать это, чтобы понять поток. Spring-mvc doc