나는 다음과 같은 인터페이스가 Guice의 ThrowingProvider 문서에 따르면의Guice ThrowingProvider 문제
public class SomethingProvider extends ConfiguredProvider implements IConfigurableProvider<Something> {}
:
public interface IConfigurableProvider<T> extends ThrowingProvider<T, ConfigException> {}
을 나는이 인터페이스를 구현하는 여러 클래스를 가지고, 나는 다음과 같은 있다고 가정하자 이 클래스는 필요한 메서드를 구현합니다.
public Something get() throws ConfigException { /* ... */ }
내 모듈에서, 나는 MyModule.java
ThrowingProviderBinder.create(binder())
.bind(IConfigurableProvider.class, Something.class)
.to(SomethingProvider.class);
에 다음 코드를하지만 내 응용 프로그램을 시작할 때 다음과 같은 오류가 발생 :
6) No implementation for com.package.Something was bound.
while locating com.package.Something
for parameter 5 at com.package.OtherClass.<init>(OtherClass.java:78)
at com.package.MyModule.configure(MyModule.java:106)
정말 내가 버그를 찾기 시작해야하는 위치 모른다 .
업데이트 : 그것은 나뿐만 아니라 범위를 설정 한 경우에도 동일한 오류 제공 :
public class OtherClass {
@Inject
public OtherClass(IConfigurableProvider<Something> somethingProvider) {
...
}
}
이 다음 Something
를 주입보다 오히려
ThrowingProviderBinder.create(binder())
.bind(IConfigurableProvider.class, Something.class)
.to(SomethingProvider.class)
.in(Singleton.class);
허용 된 답변에서 지적한대로 'ThrowingProviderBinder'의 사용법을 잘못 이해했습니다. 삽입 된 생성자는 제공된 객체 대신 공급자를 기다려야합니다 (처리 된 검사 예외가 있어야 함). –