springboot 中,CommandLineRunner、ApplicationRunner、InitializingBean、@PostConstruct 执行顺序
划水。。。
CommandLineRunner、ApplicationRunner、InitializingBean、@PostConstruct 执行顺序
InitializingBean 是 Spring 提供的一个接口,它只有一个方法 afterPropertiesSet(),该方法会在容器初始化完成后被调用。
ApplicationRunner 是 Spring Boot 提供的一个接口,它有一个方法 run(),该方法会在 Spring Boot 应用程序启动完成后被调用。
@PostConstruct 是 Java 提供的一个注解,它可以标注在方法上,该方法会在 bean 初始化完成后被调用。
执行顺序:
@PostConstruct
InitializingBean#afterPropertiesSet()
ApplicationRunner#run()
CommandLineRunner#run()
代码demo
@Component
public class MyBean implements InitializingBean, ApplicationRunner, CommandLineRunner {
@Override
public void afterPropertiesSet() {
System.out.println("InitializingBean#afterPropertiesSet()");
}
@Override
public void run(ApplicationArguments args) {
System.out.println("ApplicationRunner#run()");
}
@PostConstruct
public void postConstruct() {
System.out.println("@PostConstruct");
}
@Override
public void run(String... args) {
System.out.println("CommandLineRunner#run()");
}
}
蓝天和白云是标配。