1

我正在使用 DI 并具有以下内容

  public DoSomethingWithUsers(User user1, User user2){
      this.user1 = user1;
      this.user2 = user2;
  }

请注意,同一类型被注入了两次。

当我继续进行编码/测试时,我注意到在 user1 和 user2 上运行的所有方法都在影响 user1。

有没有办法用 picocontainer 注入多个相同类型的对象,并让它们成为预期的“独立”对象?或者,是否有不同的 DI 包允许这种行为?

谢谢

4

1 回答 1

1

pico 有以下选项:

1)您可以注入用户喜欢的集合或数组,DoSomethingWithUsers(User[] users) 它将填充容器中可用的所有用户实例,但不能保证顺序,如果您要执行组操作,这很方便。

2) 使用 ComponentParameter 提示组件键

MutablePicoContainer pico = new DefaultPicoContainer();
pico.addComponent("user1", userInstance1);
pico.addComponent("user2", userInstance2);
pico.addComponent(DoSomethingWithUsers.class, DoSomethingWithUsers.class, 
    new Parameter[]{ new ComponentParameter("user1"), new ComponentParameter("user2")}); 

3) 您可以利用此示例中的参数名称:http: //picocontainer.com/parameter-names.html

更多示例:http: //picocontainer.com/arrays-collections-and-maps.html

于 2018-10-06T14:26:48.827 回答