我試圖建立一個簡單的持久性存儲與guice堅持和一些其他的東西。通用綁定與Guice
我已經有了AbstractDao<T>
,我可以像老闆一樣輕鬆地擴展和綁定具體的實現。
不過,我想是一種GenericDao的,就像這樣:
public abstract class GenericDao<T extends Bean> {
@Inject
private Provider<EntityManager> emp;
protected EntityManager em() {
return emp.get();
}
public AbstractDao() {
}
protected abstract Class<T> clazz();
// ....
而且如果我將剛纔的CRUD在一些豆(抽象DAO實現),我想注入GenericDao<SomeBean>
像一個老闆。
於是,我開始嘗試一些黑客,並得到如下:
public abstract class AbstractPersistentModule extends AbstractModule {
protected <T extends Bean> LinkedBindingBuilder<T> bindGenericDao(final Class<T> clazz) {
return bind(
new TypeLiteral<GenericDao<T>>(){}
)./* what the hell can I do here? */;
}
}
如果我能做好工作,我就可以做一個簡單的:
bindGenericDao(Pessoa.class);
有人知道一種方法來做到這一點?
目前尚不清楚真正的實現來自哪裏。你能澄清這個問題嗎? –
這就是問題所在,在這種情況下,真正實現了一套將只提供了'類',所以,我想使它成爲執行時間莫名其妙...... –
caarlos0
卻怎麼你粘結劑知道哪些類擴展'GenericDao在'具體的方法?這就是我的觀點......即使你在這裏完全知道了'T',我們仍然不知道實現。 –