我有以下情况(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)
然而,发生的是,hanlderA和handlerB是同一个对象.但我想有两个不同的.我怎样才能以正确的方式实现这一目标?当然,我可以创建一个基类处理程序,然后推导出两个独立的类HandlerA和HandlerB和@Inject他们作为handlerA和handlerB.但我希望以更清洁的方式.
这个bean是请求范围,因此在请求生命周期中,应该只有一个这样的bean通过所有处理提供服务.你不应该期望得到一个新的.
具有这种行为的@Dependent范围是范围.你有没有考虑过将它用于那个bean?每次注入它都会产生新的bean,所以它看起来更像是一个更好的解决方案.当然,在其他地方你使用相同的bean会注入新的bean.
| 归档时间: |
|
| 查看次数: |
1037 次 |
| 最近记录: |