Главная » Spring » Завершение определения контекста приложения Spring

0

Как уже упоминалось выше, DispatcherServlet загружает контекст приложения Spring из единственного XML-файла, имя которого ос-

новано на имени, указанном в элементе <servlet-name>. Но как быть с остальными компонентами, объявленными в предыдущих главах, такими как SpitterService? Если DispatcherServlet  загружает компо- ненты из файла с именем spitter-servlet.xml, разве мы не должны объявить остальные компоненты в этом же файле?

В предыдущих главах конфигурация Spring была разбита на не- сколько XML-файлов: один – для слоя службы, один – для слоя хра- нения данных и один – для настройки источника данных. Хотя это и не обязательно, тем не менее многие предпочитают распределять конфигурацию Spring по нескольким файлам. Учитывая это, кажет- ся вполне оправданным поместить все настройки веб-слоя в файл spitter-servlet.xml, загружаемый контроллером DispatcherServlet. Но нам необходим некоторый способ загрузить все остальные конфи- гурационные файлы.

В этом нам поможет ContextLoaderListener – сервлет, загружающий дополнительные конфигурационные файлы в контекст приложения Spring, созданный контроллером DispatcherServlet. Чтобы задей- ствовать ContextLoaderListener, нужно добавить следующий элемент

<listener> в файл web.xml:

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

Кроме того, сервлету ContextLoaderListener необходимо сообщить, какие конфигурационные файлы Spring он должен загрузить. Если не указано конкретное имя файла, он будет искать файл /WEB-INF/ applicationContext.xml. Но в случае, когда конфигурация разбита на несколько файлов, возможности загружать единственный файл явно недостаточно, поэтому следует переопределить поведение по умол- чанию.

Чтобы сообщить сервлету ContextLoaderListener имена нескольких конфигурационных файлов Spring, необходимо определить пара- метр contextConfigLocation  в контексте сервлета:

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>

/WEB-INF/spitter-security.xml

classpath:service-context.xml classpath:persistence-context.xml classpath:dataSource-context.xml

</param-value>

</context-param>

Параметр contextConfigLocation определяется как список путей к фай- лам. Если явно не указано иное, пути к файлам интерпретируются относительно корневого каталога приложения. Но, так как конфигура- ция Spring в данном случае разбита на множество файлов, разбросан- ных по нескольким JAR-файлам в веб-приложении, в примере выше к некоторым из них был добавлен префикс classpath:, чтобы обеспе- чить возможность их загрузки из библиотеки классов приложения.

Выше можно заметить, что в настройки включены все конфигура- ционные файлы Spring, созданные в предыдущих главах. Обратите также внимание на несколько дополнительных конфигурационных файлов, которые еще не рассматривались, – они будут обсуждаться в последующих главах.

Теперь, после создания первого контроллера, приложение Spitter готово обрабатывать запросы на получение главной страницы. Если бы для работы приложения достаточно было одной главной страни- цы, работу на этом можно было бы считать законченной. Но при- ложение Spitter должно иметь не только главную страницу, поэтому продолжим конструирование приложения. Следующим нашим ша- гом будет создание контроллера, обрабатывающего входные данные.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии