我试图用 guice persist 和其他一些东西来构建一个简单的持久化库。
我已经有一个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 中实现)用于某个 bean,我想像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);
有人知道这样做的方法吗?