我不認爲這就是可能的,而不合格者
生病試圖表明我有genericDAO解決方案,對不起,如果這是一個有點詳細
的接口和實現類定義
public interface GenericDAO<T, ID extends Serializable> (...)
public class GenericDAOImpl<T, ID extends Serializable>
implements GenericDAO<T, ID>
(...) important is this constructor
public GenericDAOImpl(Class<T> persistentClass) {
this.persistentClass = persistentClass;
}
春豆的定義,注意摘要=「真」
<bean id="genericHibernateDAO" class="de.optimum24.av.pers.ext.hibernate.dao.GenericDAOImpl"
abstract="true">
<description>
<![CDATA[
Definition des GenericDAO.
]]>
</description>
<property name="sessionFactory" ref="sessionFactory" />
</bean>
使用這種genericDAO無需特殊的實現類
<bean id="testHibernateChildDao" class="de.optimum24.av.pers.ext.hibernate.dao.GenericDAOImpl">
<property name="sessionFactory" ref="sessionFactory" />
<constructor-arg>
<value>de.optimum24.av.pers.test.hibernate.domain.TOChild</value>
</constructor-arg>
</bean>
通知構造 - 精氨酸與具體的類,如果你使用Spring註釋工作,你需要做的:
@Autowired
@Qualifier(value = "testHibernateChildDao")
private GenericDAO<TOChild, Integer> ToChildDAO;
區分各種版本(注意限定詞直接引用Beanname)
使用此genericDAO與特殊實現類
的接口和類
public interface TestHibernateParentDAO extends GenericDAO<TOParent, Integer>{
void foo();
}
public class TestHibernateParentDAOImpl extends GenericDAOImpl<TOParent, Integer>
implements TestHibernateParentDAO {
@Override
public void foo() {
//* no-op */
}
}
bean定義,請注意以上
<bean id="testHibernateParentDao" class="de.optimum24.av.pers.test.hibernate.dao.TestHibernateParentDAOImpl"
parent="genericHibernateDAO" />
和使用 「父」 參考了抽象genericDAO與Spring註釋
@Autowired
private TestHibernateParentDAO ToParentDAO;
現在看來是可能的,因爲春季4.0。看到[SO回答](http://stackoverflow.com/a/22603321/196533)和Spring文章[Spring Framework 4.0和Java泛型](http://spring.io/blog/2013/12/03 /彈簧框架-4-0和 - java的泛型)。 – chrisjleu 2014-11-09 21:43:36