@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中启动就没有这种情况,这是为什么呢?该怎么解决呢?