Вы также можете загрузить контекст при определении самого сервлета ( 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
, на самом деле будет родительским контекстом, который загружен специально для DisplacherServlet.Таким образом, в основном вы можете загрузить все свои бизнес-сервисы, компоненты доступа к данным или репозитория в контексте приложения и выделить свой контроллер, просмотреть компоненты резолвера в WebApplicationContext.