我试图建立一个简单的持久性存储与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',我们仍然不知道实现。 –