2010-06-10 4 views
1

ok, j'ai une autre question maintenant. J'ai un tas de haricots chargé avec succès dans applicationContext.xml, qui charge à partir web.xml:Partage de beans à partir de contextListener - servlet dispatcher

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>applicationContext.xml</param-value> 
</context-param> 

<listener> 
    <listener-class>com.bamboo.common.factory.Log4JContextListener</listener-class> 
</listener> 

Voici est le haricot défini dans applicationContext.xml que je veux partager:

<bean id="catalogFacadeTarget" class="com.bamboo.catW3.business.impl.CatalogFacadeImpl"> 
    <property name="categoryDAO"><ref local="categoryDAOTarget"/></property> 
    <property name="containerDAO"><ref local="containerDAOTarget"/></property> 
    <property name="productDAO"><ref local="productDAOTarget"/></property> 
    <property name="productOptionDAO"><ref local="productOptionDAOTarget"/></property> 
    <property name="productStatusDAO"><ref local="productStatusDAOTarget"/></property> 
    <property name="userDAO"><ref local="userDAOTarget"/></property> 
</bean> 

il charge d'autres beans (DAO) qui sont initialisés avec hibernet.

J'ai besoin d'acces catalogFacadeTarget de la DispatcherServlet, a déclaré dans web.xml:

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

et configuré répartiteur-servlet.xml comme ceci:

<bean name="welcome" 
    class="com.bamboo.catW3.business.impl.Welcome"> 
    <property name="successView"> 
     <value>welcome</value> 
    </property> 
    <property name="catalogFacadeImpl"><ref local="catalogFacadeTarget"/></property> 
</bean> 

Il! dans la propriété appelée catalogFacadeImpl, j'ai besoin du bean catalogFacadeTarget!

Si vous avez besoin de l'intégralité de applicationContext.xml, web.xml et dispatcher-servlet.xml, faites-le moi savoir. De ce que j'ai lu, je devrais pouvoir partager des beans si je les ai déclarés dans le fichier de configuration contextConfigLocation.

Merci beaucoup d'avance.

Répondre

2

L'attribut local ne peut être utilisé que si le bean de référence se trouve dans le même fichier de contexte.

Une solution:

Remplacer

<property name="catalogFacadeImpl"><ref local="catalogFacadeTarget"/></property> 

avec

<property name="catalogFacadeImpl" ref="catalogFacadeTarget" /> 
Questions connexes