首页 > 解决方案 > 以应用程序开头的 CDI bean

问题描述

有什么方法可以使用应用程序启动 CDI Bean?

我有这个豆子:

@ApplicationScoped
@Named
public class MyBean implements Serializable {

    @Inject
    private Helper helper;

    @PostConstruct
    public void init() {
        helper.doThings();
    }

}

我希望这个 bean 在部署时从应用程序开始。

我正在使用weld-servlet和tomcat7:

<dependency>
    <groupId>org.jboss.weld.servlet</groupId>
    <artifactId>weld-servlet</artifactId>
    <version>${weld-servlet.version}</version>
    <scope>compile</scope>
</dependency>

标签: javatomcatcdi

解决方案


尝试:

public void startup(@Observes @Initialized 
(ApplicationScoped.class) Object context){
    //your code here
}

这将确保该方法在启动时执行,并启动您的 bean。

或者您可以使用 OmniFaces@Eager注释。


推荐阅读