【发布时间】:2018-02-12 01:29:26
【问题描述】:
假设我有一些注射类:
class MyBean {
@Inject
Helper helper;
// all sorts of data
}
并且这个类是以 CDI 容器不知道的方式创建的,例如反射、序列化或new。在这种情况下,helper 是 null,因为 CDI 没有为我们初始化它。
有没有办法告诉 CDI “激活” bean 或至少它的注入?例如,好像它是用 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。
【问题讨论】:
标签: java jakarta-ee ejb wildfly cdi