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();
// ....
GenericDao<SomeBean>
そして、いくつかの Bean に CRUD (abstract dao で実装) だけを含める場合は、上司のように注入したいと考えています。
それで、私はいくつかのハックを試し始め、次のものを手に入れました:
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);
誰かがそれを行う方法を知っていますか?