@PostConstruct、InitializingBean、CommandLineRunner、ApplicationRunner加载顺序说明

在Spring框架中,CommandLineRunnerApplicationRunnerInitializingBean@PostConstruct 注解用于在Spring容器初始化完成后执行特定的代码块。这些组件和方法按照特定的顺序执行,以下是它们的执行顺序:

  1. @PostConstruct:
    @PostConstruct 注解用于标记一个方法,该方法将在依赖项注入完成后立即执行。它是Java EE 5规范的一部分,Spring框架支持这个注解。由于它是在依赖注入后执行的,所以它可以确保所有的属性都已经被正确地设置。

  2. InitializingBean:
    InitializingBean 是一个Spring框架的接口,其中定义了一个 afterPropertiesSet() 方法。实现了这个接口的bean在所有的属性被设置之后,在初始化过程的最后阶段,会自动调用 afterPropertiesSet() 方法。这通常发生在依赖注入和@PostConstruct方法执行之后。

  3. CommandLineRunner 和 ApplicationRunner:
    CommandLineRunnerApplicationRunner 是Spring Boot特有的接口,用于在Spring应用上下文准备完毕后运行代码。这些接口通常用于执行一些启动时需要运行的任务,如数据初始化、配置检查等。这两个接口的执行顺序取决于它们在Spring容器中的注册顺序。如果没有显式指定顺序,那么它们的执行顺序可能是不确定的。

    在Spring Boot应用中,如果有多个 CommandLineRunnerApplicationRunner 实现,可以通过使用 @Order 注解或实现 Ordered 接口来指定它们的执行顺序。

综合以上各点,执行顺序大致如下:

  1. @PostConstruct 注解的方法(在bean的依赖注入之后)。
  2. InitializingBean 接口的 afterPropertiesSet() 方法(在所有属性设置完毕后)。
  3. CommandLineRunnerApplicationRunner 接口的实现(在应用上下文准备完毕后,具体顺序取决于注册顺序或@Order注解)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值