@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
批注的具体信息。
答案 0 :(得分:1)
DependsOn
不能确保一个EJB在另一个EJB之前被初始化。
容器确保在调用单例的PostConstruct方法之前已初始化与单例具有DependsOn关系的所有单例Bean。
这仅适用于使用引用的单例的ejb名称的单例EJB的具体实例。
关于会话bean的继承,EJB规范(4.9.2.1)说:
允许会话bean类具有本身就是会话bean类的超类。但是,对于这种情况,没有适用于注释或部署描述符处理的特殊规则。为了处理特定的会话Bean类,所有超类的处理都是相同的,而不管这些超类本身是否为会话Bean类。在这方面,将会话bean类用作超类仅表示实现继承的一种方便用法,而没有组件继承的语义。