Konteks Aplikasi Web memperluas Konteks Aplikasi yang dirancang untuk bekerja dengan javax.servlet.ServletContext standar sehingga dapat berkomunikasi dengan wadah.
public interface WebApplicationContext extends ApplicationContext {
ServletContext getServletContext();
}
Kacang, instantiated di WebApplicationContext juga akan dapat menggunakan ServletContext jika mereka mengimplementasikan antarmuka ServletContextAware
package org.springframework.web.context;
public interface ServletContextAware extends Aware {
void setServletContext(ServletContext servletContext);
}
Ada banyak hal yang mungkin dilakukan dengan instance ServletContext, misalnya mengakses sumber daya WEB-INF (konfigurasi xml dan lain-lain) dengan memanggil metode getResourceAsStream (). Biasanya semua konteks aplikasi yang didefinisikan dalam web.xml dalam servlet Spring application adalah konteks Aplikasi Web, ini berlaku untuk konteks root webapp dan konteks aplikasi servlet.
Juga, tergantung pada kemampuan konteks aplikasi web dapat membuat aplikasi Anda sedikit lebih sulit untuk diuji, dan Anda mungkin perlu menggunakan kelas MockServletContext untuk pengujian.
Perbedaan antara konteks servlet dan root
Spring memungkinkan Anda untuk membangun hierarki konteks aplikasi bertingkat, sehingga kacang yang diperlukan akan diambil dari konteks induk jika tidak ada dalam konteks aplikasi saat ini. Dalam aplikasi web sebagai default ada dua tingkat hirarki, akar dan servlet konteks: .
Ini memungkinkan Anda untuk menjalankan beberapa layanan sebagai lajang untuk seluruh aplikasi (kacang Spring Security dan layanan akses basis data dasar biasanya berada di sini) dan layanan lain sebagai layanan terpisah di servlet yang sesuai untuk menghindari bentrokan nama di antara kacang. Misalnya satu konteks servlet akan melayani halaman web dan lainnya akan menerapkan layanan web stateless.
Pemisahan dua tingkat ini keluar dari kotak ketika Anda menggunakan kelas servlet musim semi: untuk mengkonfigurasi konteks aplikasi root Anda harus menggunakan tag konteks-param di web.xml Anda
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/root-context.xml
/WEB-INF/applicationContext-security.xml
</param-value>
</context-param>
(konteks aplikasi root dibuat oleh ContextLoaderListener yang dideklarasikan di web.xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
) dan tag servlet untuk konteks aplikasi servlet
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>app-servlet.xml</param-value>
</init-param>
</servlet>
Harap dicatat bahwa jika init-param akan dihilangkan, maka pegas akan menggunakan myservlet-servlet.xml dalam contoh ini.
Lihat juga: Perbedaan antara applicationContext.xml dan spring-servlet.xml di Spring Framework
web.xml
file; pertanyaan ini menanyakan tentang beberapa kelas Musim Semi.