2013-03-16 5 views
2

Я знаю, что такой вопрос возвращается регулярно, но мне интересно, есть ли способ создать экземпляр вручную bean (с новым Xxxx()) и сделать мою инъекцию. Возможно, используя BeanManager, но я не знаю, как это сделать.CDI-инъекция при создании экземпляра bean-компонента вручную

Если это невозможно, я задаюсь вопросом, почему этого не сделать. Понятно, что я не нахожу веских оснований для того, чтобы сделать это невозможным.

Спасибо за разъяснения.

P.S: Я работаю с контейнером JBoss 7.1.1 и Weld CDI.

JM.

ответ

3

Поскольку фундаментальная концепция CDI - это понятие областей и связанного с ними контекста. Это Контексты в контекстах и ​​инжекциях зависимостей. В принципе, компонент с областью имеет четко определенный жизненный цикл, но когда вы создаете экземпляр компонента, вы уже не рассказываете, каков его жизненный цикл. Прочтите раздел 2.4 Scopes спецификации CDI.

Чтобы дать вам немного больше информации - CDI не только определяет ваши зависимости, но и управляет их жизненным циклом. Это выходит за рамки простого инстанцирования и инъекции зависимостей, заканчивая (вызывая @PreDestroy) не только для самого экземпляра компонента, но и для всех зависимых экземпляров. Когда вы сами инициируете фасоль, вы не знаете, когда делать эту последнюю часть.

+0

ОК. Это ясно. Спасибо за объяснение. – jmcollin92

Смежные вопросы