【发布时间】:2017-09-04 03:57:58
【问题描述】:
我是 CDI 的新手,我遇到了一个难以解释的问题,但让我们试一试。我想要一个 cdi 生产者,它产生一个名为 RequestData 的类的请求范围实例,例如这里(它的伪代码):
public class MyBean {
private RequestData dataHolder;
@Produces
@RequestScoped
public RequestData getData() {
return dataHolder;
}
}
我知道这个 cdi 生产者会产生一个实例,只要请求上下文存在(只要请求持续存在,我们就称它为 request-singleton 实例)
现在我想让 RequestData 类包含更多的 cdi 生产者。就像在这个例子中一样(同样是 java 伪代码):
public class RequestData {
private Something1 param1;
private Something2 param2;
...
@Produces
public Something1 getParam1(){
return param1;
}
@Produces
public Something2 getParam2(){
...
}
}
我的问题的最后一个问题是如何强制从 MyBean 中的请求单例实例生成 param1 和 param2(什么 java 代码/注释或我需要什么)?
综上所述,MyBean 产生 RequestData 并且 RequestData 在整个请求时间内都处于活动状态,而且它应该产生 param1、param2。
这里是注入 param1 的类的一些示例
public class Stuff{
@Inject
public void startup(Something1 param1){
// param1 shall come from MyBean.getData().getParam1()
}
}
任何想法如何实现这一点?如何让 cdi 引擎为 param1 执行 MyBean.getData().getParam1()?
【问题讨论】:
标签: java jakarta-ee dependency-injection cdi