так что не работает как есть :(
оложим, у меня есть класс с инъекциями:
class MyBean {
@Inject
Helper helper;
// all sorts of data
}
и этот класс был создан таким образом, что контейнер CDI не знает об этом, как отражение, сериализация илиnew
, В этом случаеhelper
являетсяnull
потому что CDI не инициализировал его для нас.
Есть ли способ сказать CDI «активировать» бин или, по крайней мере, его инъекцию? например, как если бы он был создан сInstance<MyBean>#get
?
Прямо сейчас у меня есть взлом, где я делаю следующее:
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);
}
}
Это выглядит довольно плохо, но это работает для всего, что я тестировал. Это просто показывает, какой конечный результат я хочу получить.
Использование Wildfly 10.1, если это важно.