努力的雅木茶 2023-06-02 16:47 采纳率: 60%
浏览 21
已结题

springboot启动项


@Component
public class ThoroughfareServer implements CommandLineRunner {
    private static final Logger log = LoggerFactory.getLogger(ThoroughfareServer.class);

    @Override
    public void run(String... args) throws Exception {
        httpAdapter();
    }
    public void httpAdapter() {
       while (true) {
                Thread.sleep(2000);
                String fetchMessage = HttpUtils.sendGet(MiraiUrlUtils.fetchMessage(10));
                Map<String, Object> fetchMessageData = (Map<String, Object>) JSON.parse(fetchMessage);
                if (Convert.toInt(fetchMessageData.get("code")) != BasicUtil.API_INF_SUCCESS) {
                    log.error("获取消息失败!" + Convert.toStr(fetchMessageData.get("msg")));
                }

                List<Map<String, Object>> fetchMessageList = (List<Map<String, Object>>) fetchMessageData.get("data");
                for (Map<String, Object> messageData : fetchMessageList) {
                    messageAcquireMessage.processingMessage(messageData);
                }
            }
    }
}

这个类实现了CommandLineRunner的run方法,按理说他是会在springboot启动类启动完成后再执行run方法的死循环,我在idea中也的确实现了,也能打开程序的web访问页面,但是我把程序打成war包放在tomcat中运行,tomcat并未将springboot启动类启动完成,反而直接执行到死循环中,导致程序并未完全启动,访问程序页面时一直在转圈加载中,但是在idea中启动就没有这种情况,这是为什么呢?该怎么解决呢?

  • 写回答

1条回答 默认 最新

  • 瞬间的未来式 2023-06-02 17:58
    关注

    idea中启动估计压根都没触发这段代码吧

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月9日
  • 创建了问题 6月2日