在CDI启动时执行代码

时间:2014-05-13 09:45:36

标签: java cdi bootstrapping

CDI引导后是否有一种简单的方法来执行代码?

实际上我有一个@ApplicationScopped bean,我希望在CDI引导后立即实例化,是否有一种简单的方法可以做到这一点?

2 个答案:

答案 0 :(得分:2)

有很多解决方案,但对我来说,只有两个不会感到黑客。我不确定Java EE 7是否以某种方式解决了这个问题,当我用Google搜索时找不到任何内容。

  1. 使用EJB中的@Startup。如果您可以使用EJB
  2. ,这是最好的
  3. 使用来自deltaspike的Servlet模块@Observes @Initialized ServletContext context
  4. http://deltaspike.apache.org/servlet.html

答案 1 :(得分:0)

来自this blog post

  

仅在最近的CDI 1.1版本中; 2013年5月(Java EE 7);您可以在容器准备就绪时收到CDI事件。

public class CDIStartup {
    public void postConstruct(@Observes @Initialized(ApplicationScoped.class) Object o) {
        // CDI Ready    
    }
}