0

@DependsOn可用于确保一个 EJB 在另一个 EJB 之前初始化:

@Startup @Singleton
public class SchemaMigration {
    // ...
}

@DependsOn("SchemaMigration")
public class Crud<E extends BaseEntity> {
    // ...
}

我想知道子类是否也隐式继承了这个约束?

@Startup @Singleton
public class Birds extends Crud<Bird> {
    // ...
}

@Startup @Singleton
public class Frogs extends Crud<Frog> {
    // ...
}

我知道普通的 Java 注释不会被继承,但是 Java EE 改变了一些注释的规则。但是我还没有找到关于@DependsOn注释的具体信息。

4

1 回答 1

1

DependsOn不能确保一个 EJB 在另一个 EJB 之前初始化。

请参考DependsOnJavadoc

容器确保在调用单例的 PostConstruct 方法之前,已初始化与单例具有 DependsOn 关系的所有单例 bean。

这仅适用于使用引用单例的 ejb 名称的单例 EJB 的具体实例。

关于会话 bean 的继承,EJB 规范(4.9.2.1)说:

允许会话 bean 类具有本身就是会话 bean 类的超类。但是,对于这种情况,没有适用于注释处理或部署描述符的特殊规则。出于处理特定会话 bean 类的目的,所有超类处理都是相同的,无论超类本身是否是会话 bean 类。在这方面,使用会话 bean 类作为超类仅代表实现继承的方便使用,但不具有组件继承语义。

于 2018-10-10T07:49:18.303 回答