나는 다음과 같은 공급자를 가지고 :Guice 제공자에게 주입 및 보조 매개 변수를 전달하는 방법은 무엇입니까?
내가 "기본"으로 어노테이션 WebResource 주입을 바인딩하고 "기타"로 어노테이션 WebResource 주입을 바인딩이 제공 한 2 개 인스턴스를 만들 필요가public class GuiceResourceProvider implements Provider<WebResource> {
@Inject
private Configuration configuration;
@Inject
private Environment environment;
private String name;
@Inject
public GuiceResourceProvider(@Assisted("name") String name) {
this.name = name;
}
@Override
public WebResource get() {
if (name == "default") {
String connectionsDSResourceUrl = "http://localhost:" + this.configuration.getHttpConfiguration().getPort();
Client connectionsDSHttpClient = new JerseyClientBuilder().using(this.configuration.getHttpClientConfiguration()).using(this.environment).build();
connectionsDSHttpClient.addFilter(new RequestIdClientFilter());
return connectionsDSHttpClient.resource(connectionsDSResourceUrl);
} else if(name == "other"){
return ......
}
}
}
.
다음과 같이 Guice는 공급자 인스턴스를 생성하는 분들께 :
bind(WebResource.class).annotatedWith(Names.named("default")).toProvider(GuiceResourceProvider.class).in(Scopes.SINGLETON);
bind(WebResource.class).annotatedWith(Names.named("other")).toProvider(GuiceResourceProvider.class).in(Scopes.SINGLETON);
그것은 주입 된 매개 변수에 대한 확인이다하지만 내가 정의를 제공 할 수 없습니다. 인스턴스를 수동으로 인스턴스화하고 사용자 지정 매개 변수를 제공하려고하면 물론 주입 된 것들이 문제가됩니다. Assisted 표기법을 따르는 경우, 문제는 모듈의 제공자 팩토리를 삽입해야한다는 것입니다. 물론 이것은 완전히 해제되었습니다!
아무도 도와 줄 수 있습니까?
확실하지 이름 == "기본"'하면'당신에게 원하는 결과를 줄 것이다 :
이
는 업체입니다. – frugalcoder