Como posso dizer ao contêiner CDI para "ativar" um bean?
Suponha que eu tenha alguma classe com injeções:
class MyBean {
@Inject
Helper helper;
// all sorts of data
}
e essa classe foi criada de uma maneira que o contêiner CDI não a conhece, como reflexão, serialização ounew
. Nesse caso, ohelper
énull
porque o CDI não inicializou para nós.
Existe uma maneira de dizer ao CDI para "ativar" o feijão ou pelo menos sua injeção? por exemplo, como se tivesse sido criado comInstance<MyBean>#get
?
No momento, tenho um hack, onde faço o seguinte:
class SomeClass {
@Inject
Instance<MyBean> beanCreator;
void activateBean() {
MyBean mybean = ... // reflection/serialization/new
MyBean realBean = beanCreator.get();
Helper proxy = realBean.getHelper();
mybean.setHelper(proxy);
beanCreator.destroy(realBean);
}
}
Parece muito ruim, mas funciona para tudo que eu testei. Apenas mostra qual é o resultado final que eu quero.
Usando o Wildfly 10.1, se for importante.