springboot 中,ApplicationRunner、InitializingBean、@PostConstruct 执行顺序

发布时间 2023-12-27 15:51:44作者: linzm14

划水。。。

ApplicationRunner、InitializingBean、@PostConstruct 执行顺序

InitializingBean 是 Spring 提供的一个接口,它只有一个方法 afterPropertiesSet(),该方法会在容器初始化完成后被调用。 
ApplicationRunner 是 Spring Boot 提供的一个接口,它有一个方法 run(),该方法会在 Spring Boot 应用程序启动完成后被调用。 
@PostConstruct 是 Java 提供的一个注解,它可以标注在方法上,该方法会在 bean 初始化完成后被调用。 
执行顺序
@PostConstruct
InitializingBean#afterPropertiesSet()
ApplicationRunner#run()

代码demo

@Component
public class MyBean implements InitializingBean, ApplicationRunner {

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