skenario 1
Dalam aplikasi klien (aplikasi bukan aplikasi web, mis. Mungkin aplikasi ayun)
private static ApplicationContext context = new ClassPathXmlApplicationContext("test-client.xml");
context.getBean(name);
Tidak perlu web.xml . ApplicationContext sebagai wadah untuk mendapatkan layanan kacang. Tidak perlu wadah server web. Di test-client.xml mungkin ada kacang Sederhana tanpa remoting, kacang dengan remoting.
Kesimpulan : Dalam Konteks 1 aplikasiContext dan DispatcherServlet
tidak terkait.
Skenario 2
Dalam aplikasi server (aplikasi yang digunakan di server misalnya Tomcat). Layanan yang diakses melalui remoting dari program klien (misalnya aplikasi Swing)
Tentukan pendengar di web.xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Di server, startup ContextLoaderListener
instantiates beans didefinisikan dalam applicationContext.xml .
Dengan asumsi Anda telah menentukan yang berikut ini di applicationContext.xml :
<import resource="test1.xml" />
<import resource="test2.xml" />
<import resource="test3.xml" />
<import resource="test4.xml" />
Kacang yang instantiated dari keempat file konfigurasi test1.xml , test2.xml , test3.xml , test4.xml .
Kesimpulan : Dalam Konteks 2 aplikasiContext dan DispatcherServlet
tidak terkait.
Skenario 3
Dalam aplikasi web dengan pegas MVC.
Di web.xml define:
<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>
Ketika Tomcat dimulai, kacang yang didefinisikan dalam springweb-servlet.xml dipakai.
DispatcherServlet
meluas FrameworkServlet
. Dalam FrameworkServlet
kacang Instansiasi berlangsung untuk springweb. Dalam kasus kami springweb adalah FrameworkServlet.
Kesimpulan : Dalam Konteks 3 applicationContext dan DispatcherServlet
tidak terkait.
Skenario 4
Dalam aplikasi web dengan pegas MVC. springweb-servlet.xml untuk servlet dan applicationContext.xml untuk mengakses layanan bisnis dalam program server atau untuk mengakses layanan DB di program server lain.
Di web.xml berikut ini didefinisikan:
<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>
Pada permulaan server, ContextLoaderListener
instanti kacang yang ditentukan dalam applicationContext.xml ; dengan asumsi Anda telah menyatakan di sini:
<import resource="test1.xml" />
<import resource="test2.xml" />
<import resource="test3.xml" />
<import resource="test4.xml" />
Kacang semua instantiated dari keempat test1.xml , test2.xml , test3.xml , test4.xml . Setelah penyelesaian instantiasi kacang didefinisikan dalam applicationContext.xml , kacang didefinisikan dalam springweb-servlet.xml adalah instantiated.
Jadi urutan instantiasi adalah: root (konteks aplikasi), lalu FrameworkServlet.
Sekarang harus jelas mengapa mereka penting dalam skenario mana.