Сценарій 1
У клієнтській програмі (додаток не веб-додаток, наприклад, програма swing)
private static ApplicationContext context = new ClassPathXmlApplicationContext("test-client.xml");
context.getBean(name);
Не потрібно web.xml . ApplicationContext як контейнер для отримання послуги з бобів. Не потрібно контейнера веб-сервера. У test-client.xml може бути Simple bean без видалення, bean з видаленням.
Висновок : У сценарії 1 додатокКонтекст і DispatcherServlet
не пов'язані між собою.
Сценарій 2
У серверній програмі (програма, розгорнута на сервері, наприклад, Tomcat). Доступ до служби за допомогою видалення з клієнтської програми (наприклад, програма Swing)
Визначте слухача в web.xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
При запуску сервера ContextLoaderListener
інстанціює боби, визначені в applicationContext.xml .
Якщо припустити, що ви визначили наступне у applicationContext.xml :
<import resource="test1.xml" />
<import resource="test2.xml" />
<import resource="test3.xml" />
<import resource="test4.xml" />
Фасолі створені з усіх чотирьох файлів конфігурації test1.xml , test2.xml , test3.xml , test4.xml .
Висновок : У сценарії 2 застосуванняКонтекст і DispatcherServlet
не пов'язані між собою.
Сценарій 3
У веб-додатку з весняним MVC.
У web.xml визначте:
<servlet>
<servlet-name>springweb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springweb</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
Коли запускається Tomcat, квасоля, визначена у Springweb-servlet.xml , створюється в екземплярі.
DispatcherServlet
розширюється FrameworkServlet
. В FrameworkServlet
інгредієнтах бобів відбувається для весняної ветви. У нашому випадку springweb - це FrameworkServlet.
Висновок : У сценарії 3 застосуванняКонтекст і DispatcherServlet
не пов'язані між собою.
Сценарій 4
У веб-додатку з весняним MVC. springweb-servlet.xml для сервлета та applicationContext.xml для доступу до бізнес-сервісу в рамках серверної програми або для доступу до сервісу БД в іншій серверній програмі.
У web.xml визначено наступне:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>springweb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springweb</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
При запуску сервера ContextLoaderListener
інстанціює боби, визначені в applicationContext.xml ; якщо ви заявили тут:
<import resource="test1.xml" />
<import resource="test2.xml" />
<import resource="test3.xml" />
<import resource="test4.xml" />
У всіх квасолях є всі чотири test1.xml , test2.xml , test3.xml , test4.xml . Після завершення опису бобів, визначеного в applicationContext.xml , квасоля, визначена у Springweb-servlet.xml , інстанціюється.
Отже, порядок інсталяції такий: корінь (контекст програми), потім FrameworkServlet.
Тепер має бути зрозуміло, чому вони важливі в якому сценарії.