当Vaadin FlowWeb应用程序启动时,我们可以注册VaadinServiceInitListener
的实现,以便通过SPI自动实例化。在该侦听器中,我们可以实现一个方法serviceInit
该方法在 Web 应用程序启动时接收ServiceInitEvent
。这个过程在手册中得到了很好的解释。
➥ 网络应用程序关闭的等效项是什么?
➥ Vaadin 应用程序即将结束时,在哪里执行拆卸和清理工作?
我知道如何在Vaadin下面的Java/Jakarta Servlet级别做到这一点。我们编写一个实现ServletContextListener
接口的类。在该类中,我们实现要在 Web 应用启动时调用的contextInitialized
方法。我们在 Web 应用程序退出时实现contextDestroyed
方法。由于 Vaadin 为启动提供了对此的抽象,我认为也许 Vaadin 也为退出提供了抽象。
没有任何专用的 SPI 用于侦听关机。相反,您可以使用相同的VaadinServiceInitListener SPI,并通过该SPI向VaadinService
实例注册ServiceDestroyListener
。
因此,执行此操作的代码将是这样的:
public class MyServiceListener implements VaadinServiceInitListener {
@Override
public void serviceInit(ServiceInitEvent event) {
VaadinService service = event.getSource();
service.addServiceDestroyListener(destroyEvent -> {
System.out.println("Destroy event for service " + destroyEvent.getSource());
});
}
}