Можем ли мы изменить имя файла конфигурации контекста DispatcherServlet? - PullRequest
15 голосов
/ 19 сентября 2010

весной веб мвс

1) Если мы определим DispatcherServlet как показано ниже

<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

он ищет файл с именем appServlet-servlet.xml в папке WEB-INF, как указано в весенней ссылке.

Мой вопрос: можем ли мы изменить это имя файла и местоположение , которое оно ищет? (Я думаю, используя параметры контекста или init, мы можем сделать это, может ли кто-нибудь сказать мне, что именно это должно быть?)

2) В каждой весенней паутине mvc web.xml у нас будет следующая строка:

    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

Здесь, у меня вопрос, какие контекстные файлы он ищет? (это прослушиватель загрузчика контекста, который ищет dispatcherservlet-servlet.xml?)

3) Разница между dispatcherservlet-servlet.xml и applicationcontext.xml? (Я видел несколько примеров .. где люди импортируют applicationcontext.xml в dispatcherservlet-servlet.xml?)

4) Скажите, пожалуйста, сколько контекстов мы можем использовать для Spring Web, и существуют ли для этого какие-либо соглашения об именах (например, диспетчерский сервлет)? /

Ответы [ 3 ]

19 голосов
/ 19 сентября 2010
  1. "Пространство имен также можно задать явно с помощью init-param сервлета namespace." Вы можете установить любой желаемый путь относительно корневого контекста

  2. Нет, ContextLoaderListener ищет applicationContext.xml (или файл, заданный параметром context contextConfigLocation. Опять же, путь относительно корня context. Я обычно помещаю мой в /WEB-INF/classes/applicationContext.xml и установите это как значение context-param).

  3. dispatcherServlet-servlet.xml является дочерним контекстом, определенным applicationContext.xml. Дочерний контекст может обращаться к bean-компонентам из родительского контекста, но обратное неверно. Итак, представьте, что у вас есть «веб» контекст со всеми контроллерами и веб-материалами, а также «основной» контекст со всем остальным

  4. Желательно иметь как можно меньше контекстов (для простоты). Но вы можете определить несколько сервлетов-диспетчеров и, следовательно, иметь несколько дочерних контекстов.

16 голосов
/ 20 сентября 2010

У меня вопрос, можем ли мы изменить имя и местоположение этого файла?

Вы имели в виду, что хотите использовать файл, который НЕ назван appServlet.xml

Копирование-вставка из mvc-shocase / web.xml

<!-- Processes application requests -->
<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
0 голосов
/ 09 февраля 2017

1A) Да, но нам нужно передать init-параметр в DispatcherServlet с именем и значением в виде «contextConfigLocation» и «местоположение файла ur» соответственно в файле DD или web.xml.) Божо уже ответил.Он [ContextLoaderListener] ищет загрузку файла (ов) контекста, предоставляемых в виде значения параметра контекста, сопоставленного с именем параметра контекста для параметра контекста.Поиск "dispatcherservlet-servlet.xml" является процессом по умолчанию в Spring MVC.ContextLoaderListener не ищет его.

3A) Божо уже ответил.

4A) Божо уже ответил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...