【发布时间】:2013-02-26 14:57:03
【问题描述】:
我有以下提供者:
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 ......
}
}
}
我需要创建这个 Provider 的 2 个实例,一个将绑定一个带有“default”注释的 WebResource 注入,一个将绑定一个带有“other”注释的 WebResource 注入。
让Guice创建Provider实例如下:
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);
注入参数没问题,但我无法提供自定义参数。如果我尝试手动实例化一个实例并提供自定义参数,那么注入的当然有问题。如果我遵循辅助符号,问题是我需要在模块中注入提供者的工厂,当然,这完全关闭了!
谁能帮忙?
【问题讨论】:
-
不确定
name == "default"是否会给你想要的结果。
标签: guice