@Service
@Slf4j
public class StartService implements ApplicationListener<ContextRefreshedEvent> {
@Resource
RobotScheduleService robotScheduleService;
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
//可以在此处把context打印下来,然后根据字段内容的不同,选择一个context进行执行初始化方法,避免该方法执行多次
log.info("context上下文的名字:"+event.getApplicationContext().getParent().getDisplayName());
if (event.getApplicationContext().getParent().getDisplayName().contains("ServletWebServer")) {
//保证只执行一次
//需要执行的方法
try {
robotScheduleService.initScheduleTask();
log.info("系统启动初始化任务");
} catch (SchedulerException e) {
log.info("系统启动初始化任务失败,原因为:"+e.getMessage());
}
}
}
}
看了网上其他方法,没有完全解决,现在提供一种解决方案