单身注射顺序

时间:2015-03-10 14:09:43

标签: java-ee dependency-injection singleton ejb ejb-3.0

我有以下内容:

@Singleton
public class A {
   @Inject
   private B b;

   @PostConstruct
   void initialize(){
     b.someMethod();
   }
}

@Singleton
public class B {

}

我们可以确定B总会在A之前注入吗?

1 个答案:

答案 0 :(得分:2)

来自EJB 3.1规范的§4.8.1:

  

在某些情况下,应用程序中的多个Singleton组件之间存在显式初始化排序依赖关系。 DependsOn注释用于表示这些依赖关系。 DependsOn依赖项用于一个Singleton必须在一个或多个其他Singletons之前初始化的情况。容器确保在调用PostConstruct之前已初始化与Singleton具有DependsOn关系的所有Singleton bean。

     

请注意,如果一个Singleton只需要从其PostConstruct方法调用另一个Singleton,则不需要显式的排序元数据。在这种情况下,第一个Singleton只会使用ejb引用来调用目标Singleton。在那里,ejb引用的获取(通过注入或查找)并不一定意味着实际创建相应的Singleton bean实例。

     

...