gpt4 book ai didi

java - 如何知道组件(spring/jetty)是否完全初始化的方法

转载 作者:行者123 更新时间:2023-12-02 08:08:50 25 4
gpt4 key购买 nike

我有一个后端服务器(Jetty),它处理 HTTP 请求并与 MySQL 数据库交互。

这一切都与 Spring 连接在一起。

我在 Swing 中还有一个 UI 前端,用作管理员工具(用户可以与数据库等进行交互)。

现在服务器和 UI 有点捆绑,这意味着当主类开始加载时,它首先启动 Spring 上下文,然后启动 UI(在 EDT 线程中)。
因此本质上只要 UI 运行,服务器就会监听请求。

我遇到的问题如下:

我想在服务器完全初始化后显示 GUI,实际上我更喜欢在 GUI 启动期间实际连接到服务器并获取一些数据,以便在 GUI 出现在屏幕上时显示它们。

现在,我通过在 EDT 线程中开始创建 GUI 之前添加几秒钟的 sleep 来实现这一点。
这解决了这个问题,但是延迟是任意的,我想这取决于目标机器。
它还使得 GUI 需要很长时间才能出现(现在延迟为 10 秒)。

我试图找出在显示 GUI 之前了解 Spring 上下文和后端 Jetty 已完全初始化的最佳方法。

我猜想的一种方法是尝试向服务器发送请求,如果失败,请继续尝试多次,直到成功为止,然后显示 GUI。

但我想知道是否有更标准的方法。

非常欢迎任何意见。

最佳答案

要检查 Spring 应用程序是否已加载,您可以实现 Spring 的 ApplicationListener接口(interface)并监听ContextRefreshedEvent

如果您从 Spring 上下文启动 Jetty(如 this example ),一旦您收到 ContextRefreshedEvent,它将完全初始化。如果您使用其他机制来启动 Jetty,您可以向它发出 http 请求,因为 http 连接器是在 Jetty 启动序列的末尾设置的。

关于java - 如何知道组件(spring/jetty)是否完全初始化的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7763528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com