Provider
我正在尝试为使用 JDBI 创建的 DAO设置一个。JDBI 使用一个Handle
对象(它是 JDBC 的包装器Connection
),您可以通过使用handle.attach(MyDaoType.class)
. 不必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);
}
}
但似乎很难将其与 Guice 联系起来。我已尝试按照此答案@Assisted
中的建议在第一个构造函数参数上使用注释。我定义了一个这样的工厂:
public interface DAOProviderFactory {
<T> DAOProvider<T> create(Class<T> daoType);
}
但不清楚我应该如何调用该FactoryModuleBuilder.implemented
方法,因为重点是我不想扩展我的提供程序类。
我有一个工厂,它返回一个返回我真正想要的东西的提供者,这似乎也有点疯狂!
让我感到震惊的是,使用 Spring DI 容器真的很容易做到这一点,所以我想相信使用 Guice 是可能的。谁能指出我正确的方向?