guice中同一类的多个实例

时间:2016-05-21 03:54:19

标签: dependency-injection guice constructor-injection

我有一个名为client的课程。

@requiredconstructorargs
Class client {

  Invoker invoker;
  String URL:

}

现在我想要的是拥有两个不同url的客户端实例。

基本的guice实例是

Client client(invoker){
  Return new client(invoker,hardcodedufl)
}

祈求者是另一种注射剂。

我想要另一个具有不同网址的实例。

我试过@namedbind(client.class).annotatedwith(Names.named("some value")).toinstance(client1(??)) 但无法通过调用者。

有人可以帮忙吗??

2 个答案:

答案 0 :(得分:1)

这个怎么样:

在模块类中创建此方法

@Named("primaryClient")
@Provides
public Client primaryClient(Invoker invoker) {
    return new Client(invoker, "hard coded url");
}

然后您可以像这样注入您的客户端:

public void someMethod(@Named("primaryClient") Client client)

答案 1 :(得分:0)

我创建了一个客户列表。

列表listOfClient(invoker){

客户端client1 =新客户端(调用者,URL1);

客户端client2 =新客户端(调用者,URL2);

返回Arrays.asList(client1,client2);

}

并在需要的地方引用该列表。