DispatcherServlet o'zining konfiguratsiyasi uchun WebApplicationContext (oddiy ApplicationContext kengaytmasi) kutadi. WebApplicationContext ServletContext va u bilan bog'langan Servletga ishorat saqlaydi. Shuningdek, u ServletContext bilan bog'liq, shuning uchun ilovalar WebApplicationContextga kirish zarur bo'lsa, uni topish uchun RequestContextUtilsning statik metodlaridan foydalanishlari mumkin.
Ko'pgina ilovalar uchun bitta WebApplicationContext yetarli. Shuningdek, bir qator DispatcherServlet (yoki boshqa Servlet) nusxalari bilan birga tashkillashtirilgan iyerarxik kontekstlar bo'lishi mumkin, har biri o'zining maxsus WebApplicationContext konfiguratsiyasiga ega.
Iyerarxiyadagi asosiy WebApplicationContext odatda bir nechta Servlet nusxalari uchun umumiy bo'lishi kerak bo'lgan infratuzilma binlar (ma'lumotlar omborlari va biznes xizmatlar kabi)ni o'z ichiga oladi. Bu binlar samarali ravishda meros qilib olinadi va kerak bo'lsa, Servletga xos bo'lgan, lokal binlarni saqlaydigan farzand WebApplicationContextda qayta e'lon qilish (ya'ni, qayta yaratish) mumkin. Quyidagi rasmda bu o'zaro bog'liqlik ko'rsatilgan:
Quyidagi misol WebApplicationContext iyerarxiyasini konfiguratsiyalashni ko'rsatadi:
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { RootConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { App1Config.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/app1/*" };
}
}
class MyWebAppInitializer : AbstractAnnotationConfigDispatcherServletInitializer() {
override fun getRootConfigClasses(): Array<Class<*>> {
return arrayOf(RootConfig::class.java)
}
override fun getServletConfigClasses(): Array<Class<*>> {
return arrayOf(App1Config::class.java)
}
override fun getServletMappings(): Array<String> {
return arrayOf("/app1/*")
}
}
getRootConfigClasses() orqali qaytarishi va
getServletConfigClasses()dan
nullni qaytarishi mumkin.
Quyidagi misolda web.xmlning ekvivalenti ko'rsatilgan:
<web-app>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/root-context.xml</param-value>
</context-param>
<servlet>
<servlet-name>app1</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/app1-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app1</servlet-name>
<url-pattern>/app1/*</url-pattern>
</servlet-mapping>
</web-app>
contextConfigLocation ni bo'sh qoldirishi mumkin.
GO TO FULL VERSION