2015-04-08 3 views
2

В web.xml есть набор параметров контекста с именем contextConfigLocation и определяется, как показано в коде ниже:Весна: потребность в контекстеConfigLocation?

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/root-context.xml</param-value> 
</context-param> 

Кроме того, тот же параметр установлен в диспетчерском Servlet, как показано ниже

<servlet> 
    <servlet-name>spring</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/servlet-context.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

Что такое разница между этими двумя contextConfigLocation s?

+1

Вы можете посмотреть это сообщение: http: // stackoverflow.com/questions/2069902/dd-elements-context-param-and-init-param-both-use-the-getinitparameter-me – Phoenix

ответ

2
  • contextConfigLocation в контекстно-парам загружается, когда мы начинаем веб-контейнер или сервер
  • Он обычно имеет DAOImpl, обслуживание, Singleton, Datasource Helper Objects и т.д., те объекты, которые мы хотим быть готовы, прежде чем руки так что они могут быть использованы

  • contextConfigLocation в Init-парам является специфичным для этого DispatcherServlet Только и загружается как только как запускает сервлет, который может быть лениво загружен, при первом вызове Servlet, если load-on-startup не является положительным значением для этого сервлета.
  • Это означает, что Бобы, определенные здесь, могут быть созданы позже. Обычно он содержит контроллер Бобы и т.д.

  • Фасоли, определенную в контекстно-парах ContextXml открыт для Фасоли определенных в INIT-пары ContextXml
  • Но фасоль, определенная в Init-парах не видна контекст-пары контекст фасоли
  • Так @Controller Bean обычно определяются в ChildApplicationContext в то время как @Service является частью RootApplicationContext
  • Это означает @Cont Ролик не может быть введен в то время как @Service как легко можно легко придать @Service Bean в @Controller

Поэтому в основном мы контролируем Видимость (не диапазон) Фасоль наличия другой контекст-конфигурации файлы

+0

Спасибо! хорошо объяснил. – Salman

1

Параметр кулака применяется во всем мире, а вторая настройка является частной и эксклюзивной для «пружинного» сервлета.

1

Есть два типа контекстов:

Корневой контекст (Super)

Own (ребенок) контекст сервлета (Sub)

В общих контекстов приложений, контексты веб-приложений являются иерархическими. Для каждого приложения есть один корневой контекст, в то время как каждый сервлет в приложении (включая сервлет диспетчера в структуре MVC) имеет свой собственный дочерний контекст.

Смежные вопросы