【发布时间】:2018-03-26 19:07:03
【问题描述】:
是否有任何 bean 类型或 Java EE 注释可以在容器启动时初始化 bean 而无需将 bean 添加到 beans.xml?
【问题讨论】:
标签: java javabeans cdi java-ee-7
是否有任何 bean 类型或 Java EE 注释可以在容器启动时初始化 bean 而无需将 bean 添加到 beans.xml?
【问题讨论】:
标签: java javabeans cdi java-ee-7
是的,有。
当我需要一个在部署时启动的单例、应用程序范围的 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 {
}
【讨论】: