Хобрук: Ваш путь к мастерству в программировании

Spring: нужен contextConfigLocation?

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

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

Также тот же параметр установлен в сервлете отправки, как показано ниже.

<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?



Ответы:


1
  • contextConfigLocation в context-param загружается, когда мы запускаем наш веб-контейнер или сервер
  • Обычно он имеет DAOImpl, Service, Singleton, вспомогательные объекты источника данных и т. д., эти объекты мы хотим подготовить заранее, чтобы их можно было использовать.

  • contextConfigLocation в init-param относится только к этому DispatcherServlet и загружается, как только запускается сервлет, который может быть загружен лениво, то есть при первом вызове сервлета, если загрузка при запуске не является положительным значением для этого сервлета.
  • Это означает, что Beans, определенные здесь, могут быть созданы позже. Обычно он содержит компоненты контроллера и т. д.

  • Bean-компоненты, определенные в context-param ContextXml, видны Bean-компонентам, определенным в init-param ContextXml.
  • Но бины, определенные в init-param, не видны контекстным бинам context-param.
  • Таким образом, @Controller Bean обычно определяется в ChildApplicationContext, а @Service является частью RootApplicationContext.
  • Это означает, что @Controller не может быть введен в @Service, хотя мы легко можем легко внедрить @Service Bean в @Controller.

Таким образом, в основном мы контролируем видимость (а не область действия) Bean-компонентов, используя разные файлы конфигурации контекста.

09.04.2015
  • Спасибо! хорошо объяснил. 10.04.2015

  • 2

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

    08.04.2015

    3

    Существует два типа контекстов:

    Корневой контекст (Супер)

    Собственный (дочерний) контекст сервлета (Sub)

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

    08.04.2015
    Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..