Spring boot 3.x Activiti7 启动失败问题
升级springboot版本3.x后,发现工作流模块无法启动,流程引擎相关类启动时无法正常注入。
异常日志
Field workflowService in cn.com.qucl.workflow.controller.WorkflowController required a bean of type 'org.activiti.engine.RuntimeService' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
springboot3版本
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.0</version>
</parent>
Activiti7版本
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.1.0.M6</version>
</dependency>
问题分析
springboot3 自动配置注册机制
自动配置注册的spring.factories
写法已废弃,已改为META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
activiti7相关依赖
截止当前7.1.0.M6版本未支持springboot3的配置加载方式
解决方案
新建META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
imports文件内填入以下内容,然后重启服务。
org.activiti.common.util.conf.ActivitiCoreCommonUtilAutoConfiguration
org.activiti.application.conf.ApplicationAutoConfiguration
org.activiti.core.common.spring.connector.autoconfigure.ConnectorAutoConfiguration
org.activiti.core.common.spring.identity.config.ActivitiSpringIdentityAutoConfiguration
org.activiti.core.common.spring.project.conf.ProjectModelAutoConfiguration
org.activiti.spring.resources.conf.ResourceFinderAutoConfiguration
org.activiti.core.common.spring.security.config.ActivitiSpringSecurityAutoConfiguration
org.activiti.core.common.spring.security.policies.config.ActivitiSpringSecurityPoliciesAutoConfiguration
org.activiti.api.runtime.conf.impl.CommonModelAutoConfiguration
org.activiti.api.runtime.conf.impl.ProcessModelAutoConfiguration
org.activiti.runtime.api.conf.ConnectorsAutoConfiguration
org.activiti.runtime.api.conf.ProcessRuntimeAutoConfiguration
org.activiti.core.common.spring.connector.autoconfigure.ConnectorAutoConfiguration
org.activiti.spring.process.conf.ProcessExtensionsConfiguratorAutoConfiguration
org.activiti.runtime.api.conf.CommonRuntimeAutoConfiguration
org.activiti.api.task.conf.impl.TaskModelAutoConfiguration
org.activiti.runtime.api.conf.TaskRuntimeAutoConfiguration
org.activiti.application.conf.ApplicationProcessAutoConfiguration
org.activiti.spring.boot.EndpointAutoConfiguration
org.activiti.spring.boot.ProcessEngineAutoConfiguration
org.activiti.spring.boot.ActivitiMethodSecurityAutoConfiguration
org.activiti.spring.process.conf.ProcessExtensionsAutoConfiguration
总结
别急着升级springboot3,升级后记得服务都启动检查一下功能是否正常。如有更好的方式欢迎评论留言。