Kontekst aplikacji sieciowej Rozszerzony kontekst aplikacji, który został zaprojektowany do pracy ze standardowym javax.servlet.ServletContext, aby mógł komunikować się z kontenerem.
public interface WebApplicationContext extends ApplicationContext {
ServletContext getServletContext();
}
Fasole, tworzone w WebApplicationContext, będą mogły także korzystać z ServletContext, jeśli zaimplementują interfejs ServletContextAware
package org.springframework.web.context;
public interface ServletContextAware extends Aware {
void setServletContext(ServletContext servletContext);
}
Istnieje wiele rzeczy, które można zrobić z instancją ServletContext, na przykład dostęp do zasobów WEB-INF (konfiguracje xml itp.) Poprzez wywołanie metody getResourceAsStream (). Zazwyczaj wszystkie konteksty aplikacji zdefiniowane w pliku web.xml w aplikacji wiosny serwletu są kontekstami aplikacji sieci Web, dotyczy to zarówno głównego kontekstu aplikacji internetowej, jak i kontekstu aplikacji serwletu.
Ponadto, w zależności od kontekstu aplikacji sieciowej, jej testowanie może być nieco trudniejsze, a do testowania może być konieczne użycie klasy MockServletContext .
Różnica między serwletem a kontekstem głównym
Wiosna pozwala budować wielopoziomowe hierarchie kontekstów aplikacji, więc wymagana fasola zostanie pobrana z kontekstu nadrzędnego, jeśli nie będzie obecna w bieżącym kontekście aplikacji. W aplikacjach internetowych domyślnie istnieją dwa poziomy hierarchii, kontekstów korzeniowe i serwletów: .
Umożliwia to uruchamianie niektórych usług jako singletonów dla całej aplikacji (zwykle znajdują się tutaj komponenty bean Spring Security i podstawowe usługi dostępu do bazy danych), a inne jako oddzielne usługi w odpowiednich serwletach, aby uniknąć konfliktów nazw między komponentami bean. Na przykład jeden kontekst serwletu będzie obsługiwał strony internetowe, a inny zaimplementuje bezpaństwową usługę internetową.
Ta dwupoziomowa separacja pojawia się po wyjęciu z pudełka podczas korzystania z wiosennych klas serwletów: aby skonfigurować kontekst aplikacji root, należy użyć tagu context-param w pliku web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/root-context.xml
/WEB-INF/applicationContext-security.xml
</param-value>
</context-param>
(kontekst aplikacji root jest tworzony przez ContextLoaderListener, który jest zadeklarowany w pliku web.xml
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
) i znacznik serwletu dla kontekstów aplikacji serwletu
<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>
Pamiętaj, że jeśli parametr init zostanie pominięty, to w tym przykładzie wiosna użyje pliku myservlet-servlet.xml.
Zobacz także: Różnica między applicationContext.xml a spring-servlet.xml w Spring Framework
web.xml
pliku; to pytanie dotyczy niektórych klas wiosennych.