Загрузка контекста весной с помощью web.XML
есть ли способ, что контекст может быть загружен с помощью web.xml в приложении Spring MVC?
3 ответа:
из весенних документов
Spring может быть легко интегрирована в любой Java-веб-фреймворк. Все, что вам нужно сделать, это объявить ContextLoaderListener в своем web.xml и использовать contextConfigLocation чтобы установить, какие файлы контекста для загрузки.
The
<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>
затем вы можете использовать WebApplicationContext, чтобы получить дескриптор ваших бобов.
WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(servlet.getServletContext()); SomeBean someBean = (SomeBean) ctx.getBean("someBean");
посмотреть http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/context/support/WebApplicationContextUtils.html для получения дополнительной информации
вы также можете указать расположение контекста относительно текущего пути к классу, что может быть предпочтительнее
<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>
вы также можете загрузить контекст при определении самого сервлета (WebApplicationContext)
<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>
вместо (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>
или может сделать оба вместе.
недостатком простого использования WebApplicationContext является то, что он будет загружать контекст только для этой конкретной точки входа Spring (
DispatcherServlet
) где, как и в случае с вышеупомянутыми методами, контекст будет загружен для нескольких точек входа (например.Webservice Servlet, REST servlet
и т. д.)контекст нагружен
ContextLoaderListener
будет infact быть родительским контекстом для того, что загружается специально для DisplacherServlet . Таким образом, в основном вы можете загрузить все свои бизнес-службы, доступ к данным или компоненты репозитория в контексте приложения и отделить свой контроллер, просмотреть компоненты решателя в WebApplicationContext.