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()");
    }
}

posted @ 2023-12-27 15:50  linzm14  阅读(227)  评论(0编辑  收藏  举报