Java EE 7 容器:在启动时初始化 bean 而不将其添加到 beans.xml?
Java EE 7 containers: initialize bean at startup without adding it to beans.xml?
是否有任何 bean 类型或 Java EE 注释可以在容器启动时初始化 bean 而无需将 bean 添加到 beans.xml?
是的,有。
当我需要一个在部署时启动的单例、应用程序范围的 bean 时,这就是我使用的:
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Named;
import javax.annotation.PostConstruct;
@Named( "myBean" )
@ApplicationScoped
@Startup
@Singleton
public class MyBean {
@PostConstruct
public void postConstruct() {}
}
如果您需要在初始化之外执行任何代码,则添加postConstruct
方法。
您可以使用 Singleton
bean,如 Initializing Singleton Session Beans 所示:
import javax.ejb.Singleton;
import javax.ejb.Startup;
@Startup
@Singleton
public class StartupBean {
}
是否有任何 bean 类型或 Java EE 注释可以在容器启动时初始化 bean 而无需将 bean 添加到 beans.xml?
是的,有。
当我需要一个在部署时启动的单例、应用程序范围的 bean 时,这就是我使用的:
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Named;
import javax.annotation.PostConstruct;
@Named( "myBean" )
@ApplicationScoped
@Startup
@Singleton
public class MyBean {
@PostConstruct
public void postConstruct() {}
}
如果您需要在初始化之外执行任何代码,则添加postConstruct
方法。
您可以使用 Singleton
bean,如 Initializing Singleton Session Beans 所示:
import javax.ejb.Singleton;
import javax.ejb.Startup;
@Startup
@Singleton
public class StartupBean {
}