Scenariusz 1
W aplikacji klienckiej (aplikacja nie jest aplikacją internetową, np. Może być aplikacją swing)
private static ApplicationContext context = new ClassPathXmlApplicationContext("test-client.xml");
context.getBean(name);
Nie ma potrzeby pliku web.xml . ApplicationContext jako kontener umożliwiający uzyskanie usługi bean. Nie ma potrzeby kontenera serwera WWW. W test-client.xml może być Prosta fasola bez zdalnego, fasola z pilotem.
Wniosek : w scenariuszu 1 aplikacjaContext i DispatcherServlet
nie są powiązane.
Scenariusz 2
W aplikacji serwerowej (aplikacja wdrożona na serwerze np. Tomcat). Dostęp do usługi poprzez zdalne sterowanie z programu klienckiego (np. Aplikacja Swing)
Zdefiniuj detektor w pliku web.xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Podczas uruchamiania serwera tworzy ContextLoaderListener
instancję komponentów bean zdefiniowanych w applicationContext.xml .
Zakładając, że w pliku applicationContext.xml zdefiniowano następujące elementy :
<import resource="test1.xml" />
<import resource="test2.xml" />
<import resource="test3.xml" />
<import resource="test4.xml" />
Ziarna tworzone są ze wszystkich czterech plików konfiguracyjnych test1.xml , test2.xml , test3.xml , test4.xml .
Wniosek : w scenariuszu 2 ApplicationContext i DispatcherServlet
nie są powiązane.
Scenariusz 3
W aplikacji internetowej ze sprężyną MVC.
W pliku web.xml zdefiniuj:
<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>
Po uruchomieniu Tomcat tworzone są instancje ziaren zdefiniowanych w pliku springweb-servlet.xml .
DispatcherServlet
rozszerza się FrameworkServlet
. W FrameworkServlet
instancji fasoli zachodzi tworzenie Springweb. W naszym przypadku springweb to FrameworkServlet.
Wniosek : w scenariuszu 3 aplikacjiContext i DispatcherServlet
nie są powiązane.
Scenariusz 4
W aplikacji internetowej ze sprężyną MVC. springweb-servlet.xml dla serwletu i applicationContext.xml do uzyskiwania dostępu do usługi biznesowej w programie serwera lub do uzyskiwania dostępu do usługi DB w innym programie serwera.
W pliku web.xml zdefiniowano:
<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>
Podczas uruchamiania serwera tworzy ContextLoaderListener
instancję komponentów bean zdefiniowanych w applicationContext.xml ; zakładając, że zadeklarowałeś tutaj:
<import resource="test1.xml" />
<import resource="test2.xml" />
<import resource="test3.xml" />
<import resource="test4.xml" />
Wszystkie instancje są tworzone z wszystkich czterech test1.xml , test2.xml , test3.xml , test4.xml . Po zakończeniu fasoli instancji określonej w applicationContext.xml , ziarna określono w springweb-servlet.xml są wystąpienia.
Kolejność tworzenia instancji to: root (kontekst aplikacji), a następnie FrameworkServlet.
Teraz powinno być jasne, dlaczego są one ważne w jakim scenariuszu.