介绍Spring Boot 启动时,自动执行指定方法的 7 种方法
在Spring Boot启动时,可以通过以下几种方式自动执行指定方法:
- 使用
@PostConstruct
注解:此注解标记的方法将在类的构造函数调用后、字段注入之后执行。
@Component
public class MyBean {
@PostConstruct
public void init() {
// 初始化代码
}
}
- 实现
CommandLineRunner
或ApplicationRunner
接口:Spring Boot会在启动时自动调用实现了这两个接口的run
方法。
@Component
public class MyCommandRunner implements CommandLineRunner {
@Override
public void run(String... args) {
// 启动时的代码
}
}
- 使用
@EventListener
注解监听ApplicationReadyEvent
事件:这个事件在Spring Boot应用完全启动完成后触发。
@Component
public class MyListener {
@EventListener(ApplicationReadyEvent.class)
public void onApplicationReady() {
// 启动完成后的代码
}
}
- 使用
ApplicationRunner
或CommandLineRunner
配合@Order
注解来控制执行顺序。
@Component
@Order(1)
public class MyCommandRunner1 implements CommandLineRunner {
public void run(String... args) {
// 启动时的代码1
}
}
@Component
@Order(2)
public class MyCommandRunner2 implements CommandLineRunner {
public void run(String... args) {
// 启动时的代码2
}
}
- 使用
@Scheduled
注解创建定时任务:如果你想在启动时之后定时执行方法,可以使用这种方式。
@Component
public class MyScheduledTask {
@Scheduled(fixedRate = 10000)
public void performTask() {
// 定时执行的代码
}
}
- 使用
ApplicationContextInitializer
接口:在Spring Boot启动时,可以自定义初始化器来修改Spring应用上下文的初始化过程。
public class MyApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
public void initialize(ConfigurableApplicationContext applicationContext) {
// 上下文初始化时的代码
}
}
- 使用
SpringApplicationRunListeners
:可以通过这种方式监听启动事件。
public class MyRunListener implements SpringApplicationRunListener {
public MyRunListener(SpringApplication application, String[] args) {
// 构造函数实现
}
public void starting() {
// 启动事件的代码
}
// 其他方法按需实现
}
在SpringApplicationBuilder
构建SpringApplication时,可以添加自定义的SpringApplicationRunListeners
。
以上每种方法都有各自的使用场景,可以根据实际需求选择合适的方法来实现Spring Boot启动时的方法自动执行。
评论已关闭