SpringBoot--ApplicationRunner接口
ApplicationRunner接口
在项目中,可能会遇到这样一个问题:在项目启动完成之后,紧接着执行一段代码。
在SpringBoot中,提供了一个接口:ApplicationRunner。该接口中,只有一个run方法,他执行的时机是:spring容器启动完成之后,就会紧接着执行这个接口实现类的run方法。
实现了ApplicationRunner接口的类,并重写run方法,在springBoot项目启动后就是调用执行一次run方法
@Component @Order(1) public class TestImplApplicationRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { //do something System.out.println("测试ApplicationRunner接口1"); } } @Component @Order(2) public class TestImplApplicationRunner2 implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { //do something System.out.println("测试ApplicationRunner接口2"); } }
@Component注解
Component 将类注入到spring容器中。
在同一个项目中,可以定义多个ApplicationRunner的实现类,他们的执行顺序通过注解@Order注解或者再实现Ordered接口来实现。
run方法的参数:ApplicationArguments可以获取到当前项目执行的命令参数。(比如把这个项目打成jar执行的时候,带的参数可以通过ApplicationArguments获取到);
由于该方法是在容器启动完成之后,才执行的,所以,这里可以从spring容器中拿到其他已经注入的bean。
@Order注解
如果有多个实现类,而你需要他们按一定顺序执行的话,可以在实现类上加上@Order注解。@Order(value=整数值)。SpringBoot会按照@Order中的value值从小到大依次执行。
@order,使用注解方式使bean的加载顺序得到控制,@Order标记定义了组件的加载顺序,值越小拥有越高的优先级,可为负数。
值越小,越先被加载。
@Order(-1)优先于@Order(0)
@Order(1)优先于@Order(2)
分类:
|--- SpringBoot
, 注解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2019-11-19 SpringBoot mysql出现The server time zone value '�й���ʱ��' is unrecogni