ApplicationRunner 实现类的直行顺序
时间: 2023-10-31 21:58:06 浏览: 88
在 Spring Boot 应用程序中,ApplicationRunner 接口用于在应用程序启动后执行一些自定义的初始化逻辑。它的实现类可以有多个,每个实现类的执行顺序可以通过实现 Ordered 接口或使用 @Order 注解来指定。
如果实现类没有实现 Ordered 接口或使用 @Order 注解,则它们的执行顺序默认为无序,即并发执行。
如果实现类实现了 Ordered 接口,可以重写 getOrder() 方法来返回一个整数值,该值越小优先级越高,会首先执行。
如果实现类使用 @Order 注解,注解中的值越小优先级越高,会首先执行。
以下是一个示例:
```java
@Component
@Order(1)
public class MyApplicationRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("MyApplicationRunner is executing.");
}
}
@Component
@Order(2)
public class AnotherApplicationRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
System.out.println("AnotherApplicationRunner is executing.");
}
}
```
在这个示例中,MyApplicationRunner 的执行顺序优先于 AnotherApplicationRunner。当应用程序启动后,首先执行 MyApplicationRunner 的 run() 方法,然后再执行 AnotherApplicationRunner 的 run() 方法。
需要注意的是,并不是所有的 ApplicationRunner 实现类都需要指定执行顺序,如果你不关心它们的执行顺序,可以省略 Ordered 接口和 @Order 注解的使用。
阅读全文