2016-11-13 2 views
0

Warum muss <init-param> in <servlet> Knoten mit der <param-name> "ContextConfigLocation" sein? Denn wenn alle <init-param> Gruppe Kommentar dann ein Projekt wird nicht geladen?Wo ist der richtige Ort für Spring-Konfigurationsdateien?

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 

    <display-name>Archetype Created Web Application</display-name> 

    <!-- Spring MVC dispatcher servlet --> 
    <servlet> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value></param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <!-- Loads Spring configurations from files --> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      /WEB-INF/spring-mvc.xml, 
      /WEB-INF/spring-security.xml, 
      /WEB-INF/hibernate-context.xml 
     </param-value> 
    </context-param> 

     <!-- Spring Security filter --> 
    <filter> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

</web-app> 

Antwort

0

Was ist der richtige Ort für das Frühjahr Konfigurationsdatei?

Sie können die Federkonfigurationsdateien geladen werden entweder durch <context-param> oder <init-param> der Servlet-Klasse. Aber es gibt einen Unterschied, wie unten erklärt:

Wenn Sie laden mit <context-param>, dann werden die Abhängigkeiten (Spring Beans) für die gesamte Anwendung (für alle Servlets) verfügbar sein. Dies wird verwendet, um die gemeinsamen Abhängigkeiten über die gesamte Anwendung (wie Dienste, DAOs, etc ..) zu laden. Wenn Sie jedoch <init-param> von DispatcherServlet laden, sind die Abhängigkeiten (Spring Beans) nur für den untergeordneten Kontext verfügbar. Wenn Sie also mehrere Eingabeendpunkte für Ihre Anwendung haben (wie Restlet oder Apache CXFServlet usw.), können Sie untergeordnete Kontexte für jedes Servlet (Einsprungpunkt) einzeln verwalten. Jeder untergeordnete Kontext besitzt/lädt die spezifischen Abhängigkeiten für die jeweilige Webschicht.

Sie bei den unten Noten von Spring WebApplicationContext API genommen aussehen:

wie generischen Anwendungskontexten, Web-Anwendungskontexte sind hierarchisch aufgebaut. Es gibt einen einzelnen Stammkontext pro Anwendung, während jedes Servlet in der Anwendung (einschließlich eines Dispatcher-Servlets im MVC-Framework) einen eigenen untergeordneten Kontext hat.

können Sie sehen here und here

Verwandte Themen