gpt4 book ai didi

java - Picocontainer:注入(inject)多个相同类型的对象

转载 作者:太空宇宙 更新时间:2023-11-04 10:08:17 24 4
gpt4 key购买 nike

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

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

请注意,相同的类型被注入(inject)两次。

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

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

谢谢

最佳答案

对于 pico,您有以下选项:

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

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

关于java - Picocontainer:注入(inject)多个相同类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52664084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com