ApplicationRunner简单使用
ApplicationRunner
是 Spring Boot 提供的一个接口,用于在 Spring Boot 应用程序启动后执行一些特定的逻辑。它定义了一个 run()
方法,该方法在应用程序的上下文已经创建并准备好处理请求之后被调用。
要使用 ApplicationRunner
,你可以按照以下步骤进行操作:
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
@Component
public class MyApplicationRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
// 在这里编写你的逻辑代码
System.out.println("应用程序启动后执行的逻辑");
}
}
- 在你的实现类上添加
@Component
注解,以将它声明为 Spring 组件,以便在应用程序启动时被自动扫描和加载。 - 在
run()
方法中编写你希望在应用程序启动后执行的逻辑代码。可以执行任何你需要的操作,例如初始化数据、加载配置、启动定时任务等。 - 当应用程序启动时,
run()
方法将自动被调用。
注意事项:
- 可以通过在
ApplicationRunner
的实现类上添加@Order
注解来定义多个ApplicationRunner
的执行顺序。 run()
方法的参数ApplicationArguments
包含了应用程序启动时传递的命令行参数,可以在方法中使用它进行特定的逻辑处理。
通过使用 ApplicationRunner
,你可以方便地在应用程序启动后执行一些初始化或特定的处理逻辑,以满足应用程序的需求。
如下示例为在项目启动时重新激活已启用的定时任务,首先在数据库中查询已启用的定时任务,随后通过 QuartzManage 工具类通过查询到的任务信息 设置 Job 和 Trigger
import co.yixiang.modules.quartz.domain.QuartzJob;
import co.yixiang.modules.quartz.service.QuartzJobService;
import co.yixiang.modules.quartz.utils.QuartzManage;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class JobRunner implements ApplicationRunner {
private final QuartzJobService quartzJobService;
private final QuartzManage quartzManage;
public JobRunner(QuartzJobService quartzJobService, QuartzManage quartzManage) {
this.quartzJobService = quartzJobService;
this.quartzManage = quartzManage;
}
/**
* 项目启动时重新激活启用的定时任务
* @param applicationArguments /
*/
@Override
public void run(ApplicationArguments applicationArguments){
System.out.println("--------------------注入定时任务---------------------");
/*--------------------------此处为个人逻辑------------------------------------*/
// 从数据库中查询 已经启用的的 定时任务
List<QuartzJob> quartzJobs = quartzJobService.findByIsPauseIsFalse();
quartzJobs.forEach(quartzManage::addJob);
System.out.println("--------------------定时任务注入完成---------------------");
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix