是否可以通过构造注入将请求范围的CDI组件注入到应用程序范围的CDI组件中?关键是,当实例化应用程序范围对象时,请求范围对象可能不存在。
答案 0 :(得分:2)
您可以自由地执行此操作,您将获得一个代理注入,以便在您调用业务方法时获取/创建相应的实例。
答案 1 :(得分:0)
这是不可能的。您只能注入相同或更大范围的bean。否则你会遇到像你提到的那样的问题 - 范围较窄的bean可能不存在。
然而,您可以使用BeanManager或Instance interface以编程方式访问,迭代和过滤可用的bean:
@Inject @Any
private Instance<MyBean> myBeans;
...
for (MyBean bean : myBeans){...}