2013-06-25 3 views
3

В моем web.xml я удалил contextConfigLocation и вместо того, чтобы указывать на application context Я определил свои бобы в моем диспетчер-сервлете. Это разрешено или Spring ищет для contextConfigLocation?Могу ли я определить beans внутри диспетчера-сервлета

<!--context-param>  //This part is commented. Is this allowed? 
    <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--> 

По бобами внутри диспетчерский сервлета ...

<bean id="dataSource" 
     class="org.apache.commons.dbcp.BasicDataSource" 
     p:driverClassName="oracle.jdbc.driver.OracleDriver" 
     p:url="jdbc:oracle:thin:@localhost:1521:Xe" 
     p:username="hibernate" 
     p:password="hibernate"></bean> 


+1

Короткий ответ - да, можно. – ha9u63ar

ответ

3

Да, но они будут видны только в веб-контексте. Посмотрите на этот ответ Spring can't see beans between servlet-context and contextConfigLocation beans

Цитата от Spring Framework API (на момент написания 3.2.2) для WebApplicationContext:

Как и общих контекстов приложений, контексты веб-приложений являются иерархическими. Существует один корневой контекст для каждого приложения, а каждый сервлет в приложении (включая сервлет диспетчера в фреймворке MVC ) имеет свой собственный дочерний контекст.

Также здесь: Context hierarchies:

Например, если вы разрабатываете веб-приложения Spring MVC вы , как правило, имеете корень WebApplicationContext загружен через Спринг ContextLoaderListener и ребенка WebApplicationContext заряженный через Диспетчер весныServlet. Это приводит к иерархии родительского и дочернего доменов , где общие компоненты и инфраструктура конфигурации: , объявленные в корневом контексте и потребляемые в контексте для детей, на веб-компонентах.

И здесь: 17.2 The DispatcherServlet:

ApplicationContext экземпляры в Spring может быть ограничена. В структуре Web MVC , каждый DispatcherServlet имеет свой собственный WebApplicationContext, , который наследует все компоненты, уже определенные в корневом каталоге WebApplicationContext. Эти унаследованные бобы могут быть переопределены в области с сервлетами, и вы можете определить новые специфичные для конкретной области компоненты локально для данного экземпляра сервлета.

Не последнее предложение:

вы можете определить новые бобы сферой применения конкретных локальных к данному Servlet например