JBoss Weld: переключить внедренный экземпляр в зависимости от контекста и внедрить экземпляр в нескольких bean-компонентах - PullRequest
0 голосов
/ 10 февраля 2012

У меня есть объект, который я хотел бы добавить в несколько объектов разного типа. Этот объект должен быть одинаковым:

class A {}
class B {@Inject A a;} 
class C {@Inject A a;}
class D {@Inject A a;}

Экземпляр A должен быть общим для объектов типа B, C, D.

Кроме того, мне нужно иметь возможность переключать экземпляр A в этих объектах, не разрушая его. Мне даже нужно иметь возможность хранить все экземпляры A в контейнере. Каждый экземпляр A связан с документом, и мое приложение должно работать с n документами (не одновременно, но должно переключаться между каждым из них). Когда пользователь выбирает другой документ, соответствующий экземпляр A должен заменить предыдущий в экземплярах B, C, D.

Есть ли простой способ сделать это с помощью JBoss Weld?

У меня есть другая идея решения (использование одноэлементного менеджера, реагирующего на выбор документа и заменяющего экземпляры A, где это необходимо), но я не считаю это решение действительно чистым. Может я ошибаюсь ...

1 Ответ

0 голосов
/ 12 марта 2012

Решением, которое я нашел, было использование Manager вместо прямого использования A, например:

class A {}
class AManager{A currentA;}
class B {@Inject AManager manager;} 
class C {@Inject AManager manager;}
class D {@Inject AManager manager;}

и переключение currentA в диспетчере в зависимости от контекста.

...