2013-01-02 36 views
3

我想在以下網站中的示例應用程序:春BeanCreationException:無法解析參考豆例外

JSF 2, PrimeFaces 3, Spring 3 & Hibernate 4 Integration Project

但我發現,在運行項目時,我得到:

SEVERE:將異常發送上下文初始化事件給類的監聽器實例org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException:創建名爲'UserService'的bean時出錯在ServletContext資源中罰款[/WEB-INF/applicationContext.xml]:設置bean屬性'userDAO'時,無法解析bean'UserDAO'的引用;嵌套異常是org.springframework.beans.factory.BeanCreationException:錯誤創建具有名稱豆 '的UserDAO' 在ServletContext的資源定義[/WEB-INF/applicationContext.xml的]

然而,在applicationContext.xml文件,相關代碼如下:

<!-- Beans Declaration --> 
<bean id="User" class="com.otv.model.User"/> 

<!-- User Service Declaration --> 
<bean id="UserService" class="com.otv.user.service.UserService"> 
    <property name="userDAO" ref="UserDAO" /> 
</bean> 

<!-- User DAO Declaration --> 
<bean id="UserDAO" class="com.otv.user.dao.UserDAO"> 
<property name="sessionFactory" ref="SessionFactory" /> 
</bean> 

<!-- Session Factory Declaration --> 
<bean id="SessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
<property name="dataSource" ref="DataSource" /> 
<property name="annotatedClasses"> 
    <list> 
    <value>com.otv.model.User</value> 
</list> 
</property> 
<property name="hibernateProperties"> 
<props> 
    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
    <prop key="hibernate.show_sql">true</prop> 
</props> 

的類都在相關的包裝形式以及可以看到下面和各種配置文件的位置。

enter image description here

我的教程和我實現它之間看到的唯一區別是,我使用NetBeans 7.2,而不是Eclipse的。

有沒有人有任何想法,爲什麼這是?

+1

哪裏的

+0

類UserDAO在包package com.otv.user.dao中定義; –

+0

我的意思是Spring bean的定義。如果它不在那裏,就沒有機會注入。 –

回答

0
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'UserService' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Cannot resolve reference to bean 'UserDAO' while setting bean property 'userDAO'; 

這是告訴你,UserService無法創建,因爲它缺少一個屬性定義

nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'UserDAO' defined in ServletContext resource [/WEB-INF/applicationContext.xml] 

這告訴你,對於UserDAO的定義無法找到。

你錯過了UserDao的定義,ref只是說它應該是那種類型,它仍然需要一個bean定義。

基本上,每當你使用「ref」時,你就是在告訴spring做出這種屬性。該類型需要在自己的bean定義中定義。

因此,如果UserDao使用一些其他屬性,再次由「ref」定義該屬性也將需要它自己的bean定義。

你必須將類和spring定義爲兩個完全獨立的實體。這些類可能在那裏,並放置在他們應該在的地方,但spring需要它的bean定義才能調用它們。它不知道UserDao或SessionFactory是什麼,除非你明確地告訴它你想調用哪個包/類。

+0

好的。我在applicationContext.xml中有UserDAO定義,並且顯示的代碼已被更改。但我仍然遇到同樣的問題。 –

+0

現在你想念SessionFactory bean。也許你應該在發佈問題之前完成基本教程。標記這個問題。 –

+0

這是不公平的。這些類是在他們應該在的地方創建的,但這些消息在運行時仍然出現,導致失敗。 –

0

/WEB-INF/applicationContext.xml應該包含像<bean id="UserDAO" class="com.otv.dao.UserDAO">...</bean>這樣的條目,其屬性在很大程度上取決於所使用的後端系統。

我還懷疑User bean是壞的副本,而過去的User實例應該從DAO中取回或以編程方式創建。

至於爲什麼它在Eclipse中而不是在Netbeans中工作,這太奇怪了。必須有一些混亂...

相關問題