是否可以在超类

时间:2015-07-01 02:14:48

标签: session ejb-3.0

我的服务类中使用了很多会话bean类。每次在服务类中需要时定义会话bean引用都很痛苦。

因此,我只是想知道我是否可以使用如下。即使我只需要SessionBean1,在初始化MyService类时是否初始化了这些EJB?如果是这样,这可能有点矫枉过正。

public class BaseService {
    @EJB
    protected SessionBean1 ejb1;
    @EJB
    protected SessionBean1 ejb2;
    @EJB
    protected SessionBean1 ejb3;
}

@Stateless
public class MyService extends BaseService {
    public void methodA() {
        super.ejb1.findAll();
    }
}

由于

1 个答案:

答案 0 :(得分:0)

是的,规范要求容器支持超类注入。

这取决于“初始化”的含义。如果您自己创建MyService实例,则注入根本不起作用; MyService需要由容器创建(是servlet,CDI bean,EJB bean等)。然后,容器显然必须做一些工作来创建一个代理对象以注入到字段中,但它可能不会创建实际的bean实例。对于无状态会话bean,在实际调用方法之前,可能无法从Bean池创建或分配实际的bean实例。对于有状态会话bean,容器将在创建MyService时创建实例。