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
...
}
}