Wczytywanie kontekstu wiosną za pomocą web.xml

Czy istnieje sposób na załadowanie kontekstu za pomocą web.xml w aplikacji Spring MVC?

Author: tereško, 2011-06-23

3 answers

From the spring docs

Spring można łatwo zintegrować z dowolnym frameworkiem www opartym na Javie. Wszystko, co musisz zrobić, to zadeklarować ContextLoaderListenerw swojej sieci.XML i użyj contextConfigLocation, aby ustawić, które Pliki kontekstowe mają być ładowane.

<context-param>:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>

<listener>
   <listener-class>
        org.springframework.web.context.ContextLoaderListener
   </listener-class>
</listener> 

Możesz następnie użyć Webaplicationkontekst, aby uzyskać obsługę fasoli.

WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(servlet.getServletContext());
SomeBean someBean = (SomeBean) ctx.getBean("someBean");

Zobacz http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/context/support/WebApplicationContextUtils.html{[19]więcej informacji

 113
Author: ddewaele,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-23 08:47:52

Możesz również określić lokalizację kontekstu względem bieżącej ścieżki klasowej, która może być preferowana

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:applicationContext*.xml</param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
 34
Author: fmucar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-11 10:53:06

Można również załadować kontekst podczas definiowania samego servletu (Webaplicationcontext )

  <servlet>
    <servlet-name>admin</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
                /WEB-INF/spring/*.xml
            </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>admin</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

Zamiast (ApplicationContext )

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext*.xml</param-value>
</context-param>

<listener>
   <listener-class>
        org.springframework.web.context.ContextLoaderListener
   </listener-class>
</listener> 

Lub może zrobić oba razem.

Wadą korzystania z Webaplicationcontext jest to, że załaduje kontekst tylko dla tego konkretnego punktu wejścia Springa (DispatcherServlet), gdzie jak w przypadku wyżej wymienionych metod kontekst zostanie załadowany dla wielu punktów wejścia (np. Webservice Servlet, REST servlet etc)

Kontekst załadowany przez ContextLoaderListener będzie kontekst nadrzędny do tego załadowanego specjalnie dla DisplacherServlet . Więc w zasadzie można załadować wszystkie usługi biznesowe, dostęp do danych lub repozytorium beans w kontekście aplikacji i oddzielić kontroler, view resolver beans to WebApplicationContext.

 17
Author: Aniket Thakur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-14 23:30:20