跳到主要内容

6.28 服务器事件

HTTP 服务器发出一些 Bean 事件,定义在 io.micronaut.runtime.server.event 包中,你可以为其编写监听器。下表总结了这些:

表 1.服务器事件

事件描述
ServerStartupEvent当服务器完成启动时发出
ServerShutdownEvent服务器关闭时发出的
ServiceReadyEvent在所有的 ServerStartupEvent 监听器被调用后发出,暴露了 EmbeddedServerInstance
ServiceStoppedEvent在所有 ServerShutdownEvent 监听器被调用后发出,暴露 EmbeddedServerInstance
警告

ServerStartupEvent 的监听器中做大量工作会增加启动时间。

下面的例子定义了一个 ApplicationEventListener,它监听 ServerStartupEvent

监听服务器启动事件

import io.micronaut.context.event.ApplicationEventListener;
...
@Singleton
public class StartupListener implements ApplicationEventListener<ServerStartupEvent> {
@Override
public void onApplicationEvent(ServerStartupEvent event) {
// logic here
...
}
}

另外,你也可以在任何接受 ServerStartupEvent 的 bean 的方法上使用 @EventListener 注解:

使用 @EventListener 和 ServerStartupEvent

import io.micronaut.runtime.event.annotation.EventListener;
import io.micronaut.runtime.server.event.ServerStartupEvent;
import javax.inject.Singleton;
...
@Singleton
public class MyBean {

@EventListener
public void onStartup(ServerStartupEvent event) {
// logic here
...
}
}

英文链接