返回一个泛型类型我试图设立一个DAO的使用Provider
创建JDBI提供者。 JDBI使用Handle
对象(它是JDBC Connection
的包装器),您可以使用handle.attach(MyDaoType.class)
获取DAO。而不是写一个单独的Provider
实现每一个DAO类我认为这将是有意义的做到这一点:配置,在吉斯
public class DaoProvider<T> implements Provider<T> {
private final Class<T> daoType;
private final Handle handle;
@Injected
public DaoProvider(Class<T> daoType, Handle handle) {
this.daoType = daoType;
this.handle = handle;
}
@Override
public T get() {
return handle.attach(daoType);
}
}
但似乎非常困难与吉斯到这样组装起来。我有使用1号构造函数的参数的@Assisted
注释试图在this answer建议。我定义了一个工厂是这样的:
public interface DAOProviderFactory {
<T> DAOProvider<T> create(Class<T> daoType);
}
但它并不清楚我应该怎么调用FactoryModuleBuilder.implemented
方法,整个的一点是,我不希望有延长我的供应商类。
它也似乎有点疯狂,我想有一个工厂返回一个提供商返回其实我想要的东西!
它给我的印象,这将是很容易做的春天DI容器,所以我愿意相信这是可能的吉斯。任何人都可以将我指向正确的方向吗?
看看这个可能的解决方案:https://stackoverflow.com/questions/24030609/how-do-i-pass-parameters-into-a-provider-with-guice – condit
@condit这使我能够出来。谢谢。如果您想添加答案,我会接受,否则我会在稍后发布我的解决方案。 –