Web Uygulaması içeriği , konteynerle iletişim kurabilmesi için standart javax.servlet.ServletContext ile çalışmak üzere tasarlanmış Uygulama Bağlamını genişletti .
public interface WebApplicationContext extends ApplicationContext {
ServletContext getServletContext();
}
WebApplicationContext içinde örneklenen fasulye, ServletContextAware arabirimini uygularsa ServletContext'i de kullanabilecektir.
package org.springframework.web.context;
public interface ServletContextAware extends Aware {
void setServletContext(ServletContext servletContext);
}
ServletContext örneğiyle yapılabilecek pek çok şey vardır, örneğin getResourceAsStream () yöntemini çağırarak WEB-INF kaynaklarına (xml config vb.) Erişme. Genellikle bir sunucu uygulaması Bahar uygulamasında web.xml dosyasında tanımlanan tüm uygulama bağlamları Web Uygulaması bağlamlarıdır, bu hem kök web uygulaması bağlamına hem de sunucu uygulamasının uygulama bağlamına gider.
Ayrıca, web uygulamasının bağlam özelliklerine bağlı olarak uygulamanızı test etmek biraz daha zorlaşabilir ve test için MockServletContext sınıfını kullanmanız gerekebilir .
Sunucu uygulaması ve kök bağlam arasındaki fark
Yay, çok düzeyli uygulama bağlamı hiyerarşileri oluşturmanıza olanak tanır; böylece, geçerli uygulama bağlamında yoksa gerekli çekirdek üst bağlamdan getirilir. : Web uygulamaları varsayılan olarak iki hiyerarşi seviyeleri, kök ve servlet bağlamları vardır .
Bu, bazı hizmetleri tüm uygulama için tektonlar olarak (Spring Security çekirdekleri ve temel veritabanı erişim hizmetleri genellikle burada bulunur) ve diğer hizmetleri fasulye arasında ad çakışmasını önlemek için ilgili sunucu uygulamalarında ayrılmış hizmetler olarak çalıştırmanıza olanak tanır. Örneğin, bir sunucu uygulaması bağlamı web sayfalarına hizmet verirken, diğeri durum bilgisi olmayan bir web hizmeti uygulayacaktır.
Bu iki düzeyli ayırma, bahar sunucu uygulamaları sınıflarını kullandığınızda kutudan çıkar: kök uygulama içeriğini yapılandırmak için web.xml dosyasında context-param etiketi kullanmalısınız .
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/root-context.xml
/WEB-INF/applicationContext-security.xml
</param-value>
</context-param>
(kök uygulama içeriği, web.xml dosyasında bildirilen ContextLoaderListener tarafından oluşturulur
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
) Ve servlet servlet uygulama bağlamlar için etiket
<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>
İnit-param atlanırsa, yayın bu örnekte myservlet-servlet.xml kullanacaktır.
Ayrıca bkz: Spring Framework'te applicationContext.xml ve spring-servlet.xml arasındaki fark
web.xml
dosyanın içeriği hakkında sorar ; bu soru bazı bahar derslerini soruyor.