簡體   English   中英

無法解析對bean'sessionFactory'的引用

[英]Cannot resolve reference to bean 'sessionFactory'

我與spring一起工作,休眠的maven項目遇到異常無法解析對調度程序servlet.xml文件的bean'sessionFactory'的引用。 在iam下面添加三個文件內容。 dispatcherservlet和應用程序上下文都在resources文件夾中。 問題是什么? 請幫忙

我的錯誤:org.springframework.web.util.NestedServletException:請求處理失敗; 嵌套的異常是org.springframework.beans.factory.BeanCreationException:創建在類路徑資源[dispatcher-servlet.xml]中定義的名稱為'stockBo'的bean時出錯:設置bean屬性'stockDao'時無法解析對bean'stockDao'的引用; 嵌套的異常是org.springframework.beans.factory.BeanCreationException:創建在類路徑資源[dispatcher-servlet.xml]中定義的名稱為'stockDao'的bean時出錯:在設置bean屬性'sessionFactory'時無法解析對bean'sessionFactory'的引用; 嵌套的異常是org.springframework.beans.factory.NoSuchBeanDefinitionException:未定義名為'sessionFactory'的bean

Dispatcher-servlet.xml文件

<!-- Stock Data Access Object -->

<bean id="stockBo" lazy-init="true" class="com.org.rolltickets.stock.bo.impl.StockBoImpl" >
<property name="stockDao">
<ref local="stockDao" />
</property>
</bean>


 <bean id="stockDao" lazy-init="true" class="com.org.rolltickets.stock.dao.impl.StockDaoImpl" >
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>

Applcaitioncontext.xml

<!-- Hibernate session factory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>

        <property name="mappingResources">
            <list>
                <value>/hibernate/Stock.hbm.xml</value>
            </list>
        </property>

    </bean>

Web.xml文件

<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>
<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>/</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>

將您的dispatcher-servlet.xml中的配置移動到另一個名為root-servlet.xml的xml文件中(名稱實際上並不重要,重要的是將其移動到新文件中)。

將dispatcher-servlet.xml文件保留為空白。

然后,在列出ApplicationContext.xml之后,在web.xml中添加新的XML文件。

它看起來應該像這樣:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:ApplicationContext.xml</param-value>
    <param-value>classpath:root-servlet.xml</param-value> 
 <context-param>

發生的情況是,該servlet在運行ApplicationContext.xml文件之前正在運行dispatcher-servlet.xml內部的代碼。

因此, dataSource bean還不存在。 通過首先運行ApplciationContext.xml,您將創建Bean,使其可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM