Уровень контекста в архитектуре веб-приложений Spring
Я борюсь с уровнем архитектуры веб-приложения Spring, ниже я делаю свои указатели. Пожалуйста, помогите относительно ниже:
Программирование на уровне контекста: контекст сервлета и контекст веб-приложения корневого приложения и контекст веб-приложения.
Я не знаю, какой боб должен упоминать, на каком уровне.
Что такое уровень иерархии контекста в веб-приложении Spring. который идет сверху или снизу.
Какой контекст находится под каким контекстом.
Я понимаю, что Servlet Context - это объект Servlet Container(контейнер Tomcat), и контейнер Servlet отвечает за управление всем сервлетом, где живет весь сервлет.
Все зависимости Бина живут в контейнере приложения, а корневой контекст веб-приложения является объектом контейнера приложения.
Каждый сервлет имеет свой собственный контекст веб-приложения, я не знаю, что это такое, такой же, как контекст сервлета.
4. А связь между ними?
Пожалуйста, опишите это с помощью диаграммы, как это, (это будет действительно заметно)
Это просто пример, чтобы понять, что загружается первым, а что внутри чего. Пожалуйста, проверьте эту схему
1 ответ
Думайте о контексте как о среде выполнения компонента.
Контейнер сервлетов (веб-сервер), размещает веб-приложения и при запуске создает один ServletContext для каждого из этих приложений. Таким образом, каждое веб-приложение живет в контексте сервлета, который предоставляет ему информацию о своей среде (контейнере). Это Java Servlet API. Tomcat является реализацией этого API.
Теперь Spring является одной из сред, которые мы можем использовать для создания веб-приложений. Когда мы развертываем наше веб-приложение в контейнере, оно (контейнер) создает ServletContext, и именно здесь наше приложение будет жить.
Каждое приложение Spring имеет корневой контекст (ApplicationContext), и в нем может существовать один или несколько дочерних контекстов. WebApplicationContext расширяет ApplicationContext. Может быть много WebApplicationContexts, потомков корневого контекста приложения. WebApplicationContext (который добавляет метод getServletContext()) может работать с ServletContext, в котором он живет.
Итак, в весеннем веб-приложении, развернутом в контейнере:
контейнер - содержит 1..n -> ServletContext - содержит 1 -> ApplicationContext - содержит 1..n -> WebApplicationContext