12 мая 2015 г.

Spring MVC. Разница между файлами application-context.xml и mvc-dispatcher-servlet.xml

Постараюсь описать разницу между файлами, которые можно встретить в проектах веб-приложений, написанных на Spring MVC (фреймворк, ориентированный на запросы).



Первый файл - application-context.xml. 

Определяет бины для корневого контекста приложения, то есть для контекста всего приложения. Прописывается в web.xml:

<!-- прописываем файл application-context-->
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/application-context.xml</param-value>
 </context-param>


В большинстве случаев, файл application-context.xml не нужен, т.к. он обычно используется для общих бинов между сервлетами и веб-приложением. Если у вас только один сервлет, тогда нет особого смысла его использовать.
В файле могут прописываться сканирование некоторых необходимых для работы классов, типа репозиториев или валидаторов, но не контроллеры:

<context:component-scan base-package="com.webapp.repository, com.webapp.validation" />


Второй файл - mvc-dispatcher-servlet.xml.

Может иметь разные названия, например "spring-servlet.xml" или "spring1-servlet.xml", "spring2-servlet.xml". Файл определяет бины для одного сервлета приложения. Таких файлов может быть много, каждый для своего сервлета.
Бины из spring-servlet.xml (mvc-dispatcher-servlet.xml) могут ссылаться на бины из application-context.xml, но не наоборот.
Также, в этом файле нужно прописывать контроллеры, в application-context.xml этого делать нельзя, так нужно для spring-mvc. Причина в том, что DispatcherServlet (главный сервлет) является Front-контроллером, все входящие запросы проходят в первую очередь через него, а потом уже идут на контроллеры, написанные вами и чтобы он о них знал, для этого и нужно прописать путь к вашим контроллерам в этом файле.
Еще в этом файле можно настроить шаблонизатор (напр. Apache Tiles), указать ресурсы с классами css или функциями javascript.



За основу статьи взяты комментарии из stackoverflow, а также немного опыта.

Комментариев нет:

Отправить комментарий

Спрашивайте, критикуйте, оставьте свое мнение