JDBI를 사용하여 만든 DAO에 대해 Provider
을 설정하려고합니다. JDBI는 Handle
개체 (JDBC Connection
의 래퍼)를 사용하며 handle.attach(MyDaoType.class)
을 사용하여 DAO를 가져올 수 있습니다.Guice에서 제네릭 형식을 반환하는 공급자 구성
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와이를 묶는 대단히 어려운 것 같다 오히려 모든 DAO 클래스에 대한 별도의 Provider
구현을 작성하는 것보다 나는 감각이 작업을 수행 할 수 있도록 거라 생각 했어요. I 은 this answer에 제안 된대로 1 번째 생성자 인수에 @Assisted
주석을 사용하여 시도한입니다. 이 같은 공장 정의 :
public interface DAOProviderFactory {
<T> DAOProvider<T> create(Class<T> daoType);
}
을하지만 요점은 내가 제공 클래스를 확장하고 싶지 않는다는 것입니다 나는이 FactoryModuleBuilder.implemented
메소드를 호출하는 방법을 분명하지 않다.
또한 내가 실제로 원하는 일을 반환하는 제공를 반환하는 공장이 거라고 조금 미친 것 같다!
이것은 스프링 DI 컨테이너로하기가 정말 쉽다는 것을 알았으므로 Guice와 (과) 가능하다고 생각합니다. 누구든지 올바른 방향으로 나를 가리킬 수 있습니까?
이 가능한 솔루션을 살펴보십시오. https://stackoverflow.com/questions/24030609/how-do-i-pass-parameters-into-a-provider-with-guice – condit
@condit으로 인해 나를 이해할 수있었습니다. 그것. 감사. 답변을 추가하려면 나중에 동의 할 것입니다. 나중에 솔루션을 게시 할 것입니다. –