В настоящее время я следую некоторым учебникам, чтобы попытаться узнать больше о Spring для будущей стажировки, сейчас я смотрю на Spring MVC.
Проект, над которым я работал, основан на xml Конфигурация изначально. Мое предположение о том, как инициализируется Spring, было следующим:
- Tomcat читает мой
web.xml
файл (знает имя файла и находится в известном месте) - Поэтому создает сервлет это экземпляр
DispatcherServlet
DispatcherServlet
запускает пружину (знает имя файла конфигурации в соответствии с соглашением об именах)
Теперь я изменил приложение на избавиться от файлов xml полностью. Конфигурация теперь происходит в определенном мною классе SpringConfigFile
с аннотацией @Configuration, @ComponentScan et c.
У меня также есть созданный мною класс WebInitializer
, расширяющий AbstractAnnotationConfigDispatcherServletInitializer
, который кажется, что отвечает за создание DispatcherServlet, я реализовал абстрактные методы, которые, кажется, отвечают за идентификацию класса конфигурации и отображений сервлета et c. Поэтому я думаю , что создание этого класса создает DispatcherServlet, который, в свою очередь (прямо или косвенно), создает контекст приложения.
Но меня смущает то, где находится экземпляр WebInitializer
создано? Откуда это все началось? В конфигурации на основе xml вы можете более четко следить за тем, как инициализируется приложение: tomcat ищет в фиксированном месте файл xml, который, как он знает, должен существовать, создает экземпляр объекта из найденной там информации, которая запускает Spring. 1026 *
Но как это работает без этих xml файлов? Я могу назвать свой класс WebInitializer
как угодно и поместить его в любую нужную мне упаковку? Tomcat просто ищет везде что-то расширяющее AbstractAnnotationConfigDispatcherServletInitializer
?