Caricamento contesto in spring utilizzando web.xml

C’è un modo per caricare un contesto usando web.xml in un’applicazione Spring MVC?

Dai documenti di spring

Spring può essere facilmente integrata in qualsiasi framework web basato su Java. Tutto quello che devi fare è dichiarare ContextLoaderListener nel tuo web.xml e usare un contextConfigLocation per impostare quali file di contesto caricare.

:

  contextConfigLocation /WEB-INF/applicationContext*.xml    org.springframework.web.context.ContextLoaderListener   

È quindi ansible utilizzare WebApplicationContext per ottenere un handle sui bean.

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

Vedi http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/context/support/WebApplicationContextUtils.html per maggiori informazioni

È anche ansible specificare la posizione del contesto relativamente al percorso di class corrente, che potrebbe essere preferibile

  contextConfigLocation classpath*:applicationContext*.xml   org.springframework.web.context.ContextLoaderListener  

È inoltre ansible caricare il contesto durante la definizione del servlet stesso ( WebApplicationContext )

   admin org.springframework.web.servlet.DispatcherServlet  contextConfigLocation  /WEB-INF/spring/*.xml   1   admin /  

piuttosto che ( ApplicationContext )

  contextConfigLocation /WEB-INF/applicationContext*.xml    org.springframework.web.context.ContextLoaderListener   

o può fare entrambi insieme.

L’inconveniente di usare solo WebApplicationContext è che caricherà il contesto solo per questo particolare punto di ingresso di Spring ( DispatcherServlet ) dove, come nel contesto dei metodi sopra menzionati, verrà caricato per più punti di ingresso (ad esempio Webservice Servlet, REST servlet ecc.)

Il contesto caricato da ContextLoaderListener sarà infatti un contesto padre a quello caricato appositamente per DisplacherServlet. Quindi, in pratica, puoi caricare tutti i servizi aziendali, i dati di accesso o i bean di repository nel contesto dell’applicazione e separare il controller, visualizzare i bean resolver in WebApplicationContext.