栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

activiti7源码分析之引擎初始化与Bean注入

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

activiti7源码分析之引擎初始化与Bean注入

这个类主要作用的就是流程引擎的配置,注解@EnableConfigurationProperties({ActivitiProperties.class, AsyncExecutorProperties.class})会将在properties中的配置属性映射到对应的类的属性中去。例如常用的在application-dev.properties配置的database-schema-update,history-level,db-history-used等属性就是在这里被映射到类ActivitiProperties中去的,然后在SpringProcessEngineConfiguration springProcessEngineConfiguration()方法中添加到引擎配置类中的。

ProcessEngineAutoConfiguration中会注册很多Bean,其中有个比较重要:

SpringProcessEngineConfiguration这个Bean主要负责流程引擎的配置,将数据源和Springboot配置文件中配置的activiti7的相关属性配置到引擎中去。这个Bean被注解@ConditionalOnMissingBean修饰,意思是只有在容器中不存在SpringProcessEngineConfiguration的情况下这个Bean才会被注册,因此如果要自定义自己的引擎配置,重新定义一个SpringProcessEngineConfiguration类型的Bean即可。

ProcessEngineAutoConfiguration继承了AbstractProcessEngineAutoConfiguration,这个抽象类里面定义了几个比较重要的Bean:

ProcessEngineFactoryBean这个Bean的主要作用产生ProcessEngine Bean,可以理解为是产生Bean的Bean,比较拗口。这个Bean实现了FactoryBean接口,FactoryBean接口是spring里面一个接口,与它长得比较类似的事BeanFactory,它们作用完全不一样。FactoryBean是一个工厂Bean,可以生成某一个类型Bean实例,它最大的一个作用是:可以让我们自定义Bean的创建过程。BeanFactory是一个接口,它是Spring中工厂的顶层规范,是SpringIoc容器的核心接口,它定义了getBean()、containsBean()等管理Bean的通用方法。Spring的容器都是它的具体实现,它负责管理所

【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 免费领取

有的Bean,包括FactoryBean。

上面说到FactoryBean可以让我们自定义Bean的创建过程,那么怎么定义呢,方法很简单,只要实现FactoryBean的getObject方法即可。看下ProcessEngineFactoryBean中getObject的实现:

这里返回的类型也就是这个ProcessEngineFactoryBean产生的Bean即为Processengine。说了这么多,可以简单概括为ProcessEngineFactoryBean主要是负责产生一个Processengine,实现引擎Bean的注入。

这个抽象类中还注入了其他常用的Bean,例如RuntimeService,RepositoryService,HistoryService,TaskService等。

与这个过程类似,在初始化的时候还加载了许多其他类型的Bean。

在ProcessEngineFactoryBean的getObject方法是为了创建Processengine,其中最关键的代码:

this.processEngine = this.processEngineConfiguration.buildProcessEngine();跟进去看这里的buildProcessEngine()的具体实现:

其中的this.autoDeployResources(processEngine);会在项目启动的时候将classpath**/processes/目录下的流程图自动部署。可以通过spring.activiti.deployment-mode这个属性设置各种不同的部署策略。

[](

)读者福利


感谢你看到了这里!

我这边整理很多2021最新Java面试题(含答案)和Java学习笔记,如下图

上述的面试题答案小编都整理成文档笔记。 同时也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图)免费分享给大家,有需要的可以 [点击进入暗号:CSDN!](

)免费分享~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/356883.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号