簡體   English   中英

Spring無法連接bean為“Generic Dao沒有特殊實現類”的情況

[英]Spring unable to wiring bean for “Generic Dao without special implementation class” case

我嘗試為這個https://stackoverflow.com/a/511417實現Generic DAO的解決方案。 但是對於“使用此genericDAO而沒有特殊實現類”的情況,我得到了NoSuchBeanDefinitionException。

完整的堆棧跟蹤http://pastebin.com/HwrjEZiX

正如我所見,Spring無法為沒有特殊實現類的Generic Dao連接bean

https://dl.dropboxusercontent.com/u/8384811/Misc/2013-05-14_224944.jpg Spring使用JdkDynamicAopProxy連接BranchHibernateDao類,“將此genericDAO與特殊實現類一起使用”案例。

根據JavaDoc,它創建一個動態代理,實現由AopProxy公開的接口。 be used to proxy methods defined in classes, rather than interfaces. 動態代理用於代理類中定義的方法,而用於接口。

因此它看到了用於branchDao bean定義的BrunchDao和Crud接口的方法。

但它無法連接branchGenericDao(“使用此genericDAO而無需特殊實現類”的情況),並且看不到Crud接口方法。

我會感謝任何幫助!

豆的布線

<bean id="branchDao" class="org.jtalks.poulpe.model.dao.hibernate.BranchHibernateDao" parent="genericDao"/>

<bean id="branchGenericDao" class="org.jtalks.common.model.dao.hibernate.GenericDao">
<qualifier value="branchGenericDao"/>
<constructor-arg name="sessionFactory" ref="sessionFactory"/>
<constructor-arg name="type" value="org.jtalks.poulpe.model.entity.PoulpeBranch"/>
</bean>

<bean id="genericDao" abstract="true" class="org.jtalks.common.model.dao.hibernate.GenericDao">
<constructor-arg name="sessionFactory" ref="sessionFactory"/>
</bean>

測試源在這里https://github.com/jtalks-org/poulpe/blob/master.senleft/poulpe-model/src/test/java/org/jtalks/poulpe/model/dao/hibernate/BranchHibernateDaoTest.java

Crud源在這里https://github.com/jtalks-org/jtalks-common/blob/master.senleft/jtalks-common-model/src/main/java/org/jtalks/common/model/dao/Crud。 java的

GenericDao來源在這里https://github.com/jtalks-org/jtalks-common/blob/master.senleft/jtalks-common-model/src/main/java/org/jtalks/common/model/dao/hibernate/ GenericDao.java

BranchHibernateDao源碼在這里https://github.com/jtalks-org/poulpe/blob/master.senleft/poulpe-model/src/main/java/org/jtalks/poulpe/model/dao/hibernate/BranchHibernateDao.java

問題可能在於您的測試。 當您使用Spring編寫測試時,必須使用正確的Spring測試運行器。 嘗試修改你的測試工作更像這樣 ,或嘗試實際實現它,而不是用測試框架來測試它是否有效。

另外,如果你想創建泛型daos並且你正在使用Hibernate,你應該真正研究Spring Data JPA 使用它將使你的生活比你正在嘗試做的事情容易10倍,因為它會做你想做的事情,但工作量少,選擇比你自己能夠實現的要好。

(您在Spring Data之前的答案是肯定的。我相信如果它存在,他們會使用Spring Data。)

暫無
暫無

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

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