将两个@RequestScoped bean作为不同的实例注入

bad*_*era 2 java java-ee

我有以下情况(Java EE,CDI,jax.rs):

我有一个RequestScoped Bean,它存储在请求的实时时间中使用的一些数据:

MyHandler.java:
@RequestScoped
public class MyHandler
{
    ....
}
Run Code Online (Sandbox Code Playgroud)

然后我有我的REST调用,它使用我的处理程序Bean的两个不同实例:

MyRestCall.java:
@Stateless
public class MyRestCall
{
    @Inject
    MyHandler handlerA;

    @Inject
    MyHandler handlerB;

    ....
}
Run Code Online (Sandbox Code Playgroud)

然而,发生的是,hanlderAhandlerB是同一个对象.但我想有两个不同的.我怎样才能以正确的方式实现这一目标?当然,我可以创建一个基类处理程序,然后推导出两个独立的类HandlerAHandlerB和@Inject他们作为handlerAhandlerB.但我希望以更清洁的方式.

Mar*_*ski 5

这个bean是请求范围,因此在请求生命周期中,应该只有一个这样的bean通过所有处理提供服务.你不应该期望得到一个新的.

具有这种行为的@Dependent范围是范围.你有没有考虑过将它用于那个bean?每次注入它都会产生新的bean,所以它看起来更像是一个更好的解决方案.当然,在其他地方你使用相同的bean会注入新的bean.