Некоторая информация о теге Spring web.xml <context-param> и <listener> (ссылается на пример Hello World)

Я совершенно новый в мире Spring MVC. Сегодня я изучаю простой пример Hello World, созданный STS: Файл --- > Spring Проект шаблона --- > Spring Проект MVC

В web.xml у меня есть объявление DispatcherServlet и сопоставления запросов, обрабатываемых им... До сих пор все нормально

В web.xml у меня есть и эта часть кода:

<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>

<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

Чтение документации Spring о ContextLoaderListener Я прочитал, что этот класс выполняет загрузку слушателя, чтобы запустить Spring root WebApplicationContext, но... что это значит точно?

Другое сомнение касается параметра contextConfigLocation, который я передаю в свой контекст... что именно? Открывая файл /WEB -INF/ spring/root-context.xml, кажется, что он не содержит никакой конфигурации... это файл конфигурации void, созданный автоматически при создании моего шаблона? какая конфигурация должна содержать проект Spring?

Я думаю, что tath the и теги не используются в этом проекте Hello World, потому что если я удалю эти теги, projext все равно будет работать... правильно?

Ответ 1

ContextLoaderListener - это класс, который запускает контейнер Spring. В основном каждое приложение Spring состоит из нескольких beans и проводки (декларативное описание которых beans зависит друг от друга). Это описание было исторически написано в XML (в наши дни у нас есть аннотации, конфигурация Java, сканирование CLASSPATH и т.д.).

Без контейнера Spring ваш beans - это просто классы Java, а файл конфигурации Spring - это просто бесполезный XML-документ. ContextLoaderListener читает этот файл, находит ваши классы, создает экземпляры и проводы. Все ваши beans затем помещаются в контейнер.

Дополнительно ContextLoaderListener закрывает контекст (выключение всех beans, если они нуждаются в некоторой очистке) при завершении работы приложения.