¿Cómo puedo decirle al contenedor CDI que "active" un bean?
Supongamos que tengo alguna clase con inyecciones:
class MyBean {
@Inject
Helper helper;
// all sorts of data
}
y esta clase se creó de una manera que el contenedor CDI no conoce como reflexión, serialización onew
. En este caso elhelper
esnull
porque el CDI no lo inicializó para nosotros.
¿Hay alguna manera de decirle a CDI que "active" el bean o al menos su inyección? por ejemplo, como si fue creado conInstance<MyBean>#get
?
En este momento tengo un truco donde hago lo siguiente:
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);
}
}
Esto se ve bastante mal, pero funciona para todo lo que probé. Simplemente muestra cuál es el resultado final que quiero.
Usando Wildfly 10.1 si es importante.