Springboot中ApplicationContextInitializer工作原理(源码)

源码分析:

由启动类进入:

 紧接着,我们看看new SpringApplication(sources)里面做了什么:

 这就是ApplicationContextInitializer的加载方法,让我们先进去getSpringFactoriesInstances里面看看:

 进入第6步的SpringFactoriesLoader.loadFactoryNames方法,我们发现:

factoryClassName=org.springframework.context.ApplicationContextInitializer

 就是去找META-INF/spring.factories中:

 拿到数据后,我们返回看第6步中的方法:createSpringFactoriesInstances,其中parameterTypes=[],这个参数主要是用来做反射实例化时,调用无参构造进行实例化的:

 将所有类实例化完成之后返回到第4步,并添加到SpringApplication类的属性initializers集合中去

 那么,这个集合在哪儿用到呢,我们就顺着代码往下找,回到第3步的run方法,一直往下找

 来到第11步的方法:prepareContext,跟进去我们看看:

 看到这个方法:applyInitializers没有?这个就是到了用到ApplicationContextInitializer的时候到了,那么我们在跟着进去看:

 那我们看看这个方法:getInitializers里面干了些啥:

 看到没有,this.initializers,其实就是前面第10步中的this.initializers,将这个list集合转成了set集合返回了,来到第13步中:

 遍历里面就会执行initializer.initialize(context)方法,就会发现每一个ApplicationContextInitializer必定会实现initialize方法,如下图:

 那么,是不是一目了然,so easy~~~~~

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个开源的Java开发框架,用于快速创建独立的、可运行的基于Spring的应用程序。Spring Boot的特点是简化了Spring应用程序的开发和部署过程,提供了一种约定大于配置的开发模式,减少了开发者的配置工作量,使得开发者可以更加专注于业务逻辑的实现。 工作流是一种在企业应用常见的业务流程管理方式,通过自动化的程序来驱动和管理业务流程。Spring Boot并不直接提供工作流的功能,但可以与其他工作流引擎集成使用,比如Activiti、Camunda等。这些工作流引擎也都是开源的,提供了完整的工作流实现方案。 如果想要查看Spring Boot与工作流引擎的集成源码,可以先选择一个工作流引擎,比如Activiti。然后在Spring Boot应用添加相应的依赖,配置相关的配置文件,就可以与工作流引擎进行集成了。 在集成过程,可以使用Spring Boot的特性来简化工作流的配置和使用,比如自动装配、注解驱动等。可以自定义Spring Boot的各种组件和配置,以适应具体的业务需求。 通过查看Spring Boot与工作流引擎集成的源码,可以了解到如何在Spring Boot应用使用工作流引擎来管理业务流程,包括创建和定义流程、部署和执行流程、管理流程的状态和任务等。 总之,Spring Boot是一个开源的Java开发框架,可以与开源的工作流引擎集成使用。通过查看源码,可以了解到如何在Spring Boot应用使用工作流引擎来实现业务流程管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值