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 {

}