我嘗試實現像這樣的Generic DAO的解決方案。 但是對於「使用此genericDAO沒有特殊實現類」的情況下,我得到NoSuchBeanDefinitionException。春天無法爲「沒有特殊實現類的Generic Dao」案例連接bean
完整的堆棧跟蹤http://pastebin.com/HwrjEZiX
在我沒有特別的實現類春季不能用於佈線通用的DAO豆
https://dl.dropboxusercontent.com/u/8384811/Misc/2013-05-14_224944.jpg Spring使用JdkDynamicAopProxy佈線BranchHibernateDao類,「使用這種genericDAO與專項實施類「情況。
根據JavaDoc它創建一個動態代理,實現 * AopProxy公開的接口。動態代理服務器不能使用來代理在類中定義的方法 ,而不是接口。
因此,它看到了用於branchDao bean定義的BrunchDao和Crud接口的方法。
但它不能連接branchGenericDao(「使用此genericDAO沒有特殊實現類」的情況下)並沒有看到Crud接口方法。
我會感謝您的任何幫助!
Bean的佈線
<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>
BranchHibernateDao來源是這裏https://github.com/jtalks-org/poulpe/blob/master.senleft/poulpe-model/src/main/java/org/jtalks/poulpe/model/dao/hibernate/BranchHibernateDao.java
的問題是在branchGenericDao bean類型。在測試branchGenericDao字段時,我聲明瞭GenericDao類型(類)不是Crud類型(接口)。從GenericDao改變類型到Crud解決了這個問題。 – senleft