我是CDI的新手,我有一个难以解释的问题,但让我们试一试。我想有其产生的请求范围称为的RequestData喜欢这里的类的实例,例如(其伪代码)一个CDI制片人:CDI嵌套生产者问题
public class MyBean {
private RequestData dataHolder;
@Produces
@RequestScoped
public RequestData getData() {
return dataHolder;
}
}
我知道,这CDI厂家生产的一个实例,其“生命”在野蛮应用服务器中,只要请求上下文在那里(只要请求持续,我们称之为请求 - 单例实例thingy)
现在我想让那个RequestData类包含进一步的cdi生产者。就像这个例子(同样的Java伪代码):
public class RequestData {
private Something1 param1;
private Something2 param2;
...
@Produces
public Something1 getParam1(){
return param1;
}
@Produces
public Something2 getParam2(){
...
}
}
我的问题的最后一个问题是我怎么能强迫参数1和参数要从请求单个实例中为myBean生产(什么java代码/注释或者我需要什么)?
总结MyBean产生的RequestData和RequestData是活的整个请求时间,而且还会产生param1,param2。
这里一类注射参数1
public class Stuff{
@Inject
public void startup(Something1 param1){
// param1 shall come from MyBean.getData().getParam1()
}
}
任何想法的一些示例如何实现这一目标?如何让cdi引擎为param1执行MyBean.getData()。getParam1()?
你好,这是不是我要求的,但我喜欢。你能在我的要求下尝试解决我的问题吗? – Ckkn
一,我不会解决你的问题,你想解决它的方式。为了生成param1和param2,我会像这样对'RequestData'产生依赖关系: '@''@Produces @RequestScoped public Something1 produce(RequestData rd) ''' – maress