【问题标题】:Java EE 7 containers: initialize bean at startup without adding it to beans.xml?Java EE 7容器:在启动时初始化bean而不将其添加到beans.xml?
【发布时间】:2018-03-26 19:07:03
【问题描述】:

是否有任何 bean 类型或 Java EE 注释可以在容器启动时初始化 bean 而无需将 bean 添加到 beans.xml?

【问题讨论】:

    标签: java javabeans cdi java-ee-7


    【解决方案1】:

    是的,有。
    当我需要一个在部署时启动的单例、应用程序范围的 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方法。

    【讨论】:

      【解决方案2】:

      您可以使用Singleton bean,如Initializing Singleton Session Beans 所示:

      import javax.ejb.Singleton;
      import javax.ejb.Startup;
      
      @Startup
      @Singleton
      public class StartupBean {
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-17
        • 2015-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-28
        相关资源
        最近更新 更多