【问题标题】:Startup / Shutdown Hook for Helidon MP / Microprofile?Helidon MP / Microprofile 的启动/关闭挂钩?
【发布时间】:2019-10-24 06:00:03
【问题描述】:

我正在使用 Helidon MP 开发一个微服务应用程序。到目前为止,我的经历很棒。但我最终寻找 Helidon MP 的启动/关闭挂钩。我试图通过搜索和 Helidon Javadoc 找到。但我找不到任何有用的东西。

Helidon MP / Microprofile 是否提供此类功能?

【问题讨论】:

    标签: cdi microprofile helidon


    【解决方案1】:

    如果您使用的是 Helidon MP,那么您使用的是 CDI 2.0 under the covers。所以这个问题简化为:“有没有办法在 CDI 容器启动和关闭时收到通知?”

    如果你有一个 CDI bean(通常是用 @ApplicationScoped@Dependent@RequestScoped 注释的东西),那么你可以添加一个 observer method 到它,当 context 由特定范围表示时通知它注解(如ApplicationScoped)被初始化或销毁。应用程序范围的初始化几乎是您想要的,因为它大致相当于“应用程序启动时”,因此您可以在任何 CDI 应用程序(包括 Helidon MP)中执行此操作:

    import javax.enterprise.context.ApplicationScoped;
    import javax.enterprise.event.Initialized;
    import javax.enterprise.event.Observes;
    
    private final void onStartup(@Observes @Initialized(ApplicationScoped.class) final Object event) {
      // Do what you want; the CDI container has come up and everything
      // is open for business
    }
    

    如果您想在一切崩溃之前立即知道,您可以这样做:

    private final void rightBeforeShutdown(@Observes @BeforeDestroyed(ApplicationScoped.class) final Object event) {
      // Do what you want; the CDI container is just about to go down
    }
    

    请注意as documented in the specification观察者方法可以任意命名,必须有一个用@Observes注释的参数,通常返回void并且可以是任何保护级别。

    【讨论】:

    • 优秀;请考虑接受答案。
    猜你喜欢
    • 2021-03-13
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多