Picocontainer: внедрить несколько объектов одного типа - PullRequest
0 голосов
/ 05 октября 2018

Я использую DI и имею следующее

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

Обратите внимание, что один и тот же тип вводится дважды.

Когда я приступил к своему кодированию / тестированию, я заметил, что все методы, запускаемые на user1 и user2, влияют на user1.

Есть ли способ внедрить несколько объектов одного типа с помощью picocontainer идолжны ли они быть "независимыми" объектами, как предполагалось?Или есть другой пакет DI, который позволил бы такое поведение?

thnx

1 Ответ

0 голосов
/ 06 октября 2018

У вас есть следующие опции с пико:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...