Senaryo 1
İstemci uygulamasında (uygulama web uygulaması değildir, örneğin swing uygulaması olabilir)
private static ApplicationContext context = new ClassPathXmlApplicationContext("test-client.xml");
context.getBean(name);
Web.xml dosyasına gerek yoktur . Fasulye servisi almak için konteyner olarak ApplicationContext. Web sunucusu kapsayıcısına gerek yoktur. In test client.xml hiçbir remoting Basit fasulye, Remoting ile fasulye olabilir.
Sonuç : Senaryo 1'de applicationContext ve DispatcherServlet
ilişkili değildir.
Senaryo 2
Bir sunucu uygulamasında (sunucuya dağıtılan uygulama, örneğin Tomcat). İstemci programından (örn. Swing uygulaması) uzaklaşarak erişilen hizmet
Web.xml dosyasında dinleyiciyi tanımlayın
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Sunucu başlangıcında applicationContext.xmlContextLoaderListener
dosyasında tanımlanan çekirdekleri başlatır .
ApplicationContext.xml dosyasında aşağıdakileri tanımladığınızı varsayarsak :
<import resource="test1.xml" />
<import resource="test2.xml" />
<import resource="test3.xml" />
<import resource="test4.xml" />
Çekirdekler test1.xml , test2.xml , test3.xml , test4.xml dosyasının dört yapılandırma dosyasından da somutlaştırılır .
Sonuç : Senaryo 2'de applicationContext ve DispatcherServlet
ilişkili değildir.
Senaryo 3
Bahar MVC ile bir web uygulamasında.
Gelen Web.xml tanımlar:
<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 başladığında, springweb-servlet.xml dosyasında tanımlanan fasulye başlatılır.
DispatcherServlet
uzanır FrameworkServlet
. Gelen FrameworkServlet
fasulye örnekleme springweb için gerçekleşir. Bizim durumumuzda springweb FrameworkServlet.
Sonuç : Senaryo 3'te applicationContext ve DispatcherServlet
ilişkili değildir.
Senaryo 4
Bahar MVC ile web uygulamasında. servlet için springweb-servlet.xml ve sunucu programındaki işletme hizmetine veya başka bir sunucu programındaki DB hizmetine erişmek için applicationContext.xml .
Gelen Web.xml şu şekilde tanımlanmıştır:
<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>
Sunucu başlangıcında, applicationContext.xmlContextLoaderListener
dosyasında tanımlanan çekirdekleri başlatır ; burada beyan ettiğiniz varsayılarak:
<import resource="test1.xml" />
<import resource="test2.xml" />
<import resource="test3.xml" />
<import resource="test4.xml" />
Fasulyelerin hepsi dört test1.xml , test2.xml , test3.xml , test4.xml'den somutlaştırılır . Tanımlanan fasulye örnekleme işlemi tamamlandıktan sonra applicationContext.xml , fasulye tanımlanan springweb-servlet.xml örneği.
Örnekleme sırası şudur: kök (uygulama bağlamı), ardından FrameworkServlet.
Şimdi hangi senaryoda niçin önemli oldukları açık olmalıdır.