【问题标题】:Sharing beans from contextListener -- dispatcher servlet从 contextListener 共享 bean——调度程序 servlet
【发布时间】:2010-06-10 21:42:28
【问题描述】:

好的,我现在还有一个问题。我在 applicationContext.xml 中成功加载了一堆 bean,从 web.xml 加载:

<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>

这是我想要分享的 applicationContext.xml 中定义的 bean:

<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>

它会加载使用休眠网络初始化的其他 bean (DAO)。

我需要从 dispatcherServlet 访问 catalogFacadeTarget,在 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>

并像这样配置 dispatcher-servlet.xml:

<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>

那里!在名为 catalogFacadeImpl 的属性中,我需要 catalogFacadeTarget bean!

如果您需要整个 applicationContext.xml、web.xml 和 dispatcher-servlet.xml,请告诉我。

根据我的阅读,如果我在 contextConfigLocation 配置文件中声明它们,我应该能够共享 bean。

非常感谢您。

【问题讨论】:

    标签: java spring


    【解决方案1】:

    只有当引用 bean 在同一个上下文文件中时,才能使用本地属性。

    解决办法:

    替换

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

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

    【讨论】:

      猜你喜欢
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多