原文发布在简书:springboot2.x整合工作流activiti6.0问题及解决方案
前言
由于项目需求涉及到流程,自然而然就选择activiti作为流程管理。项目环境为springboot2.1.4release版本+JDK1.8.0_201,随后到maven中央仓库查找:activiti-spring-boot-starter发现了7.0GA稳定版本。心里一阵狂喜。因为之前项目使用时只是beta版本,但是还是非常方便,引入依赖即可使用。但是这次使用却出现了问题。意思大概是activiti-spring-boot-starter使用了比当前JDK更高的版本编译,生成的class文件当前jre虚拟机无法识别。activiti-spring-boot-starter均为7.x,因此我选择之前activiti提供的activiti-spring-boot-starter-basic6.0稳定版来整合。
开始整合
1.引入依赖
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter-basic</artifactId>
<version>6.0.0</version>
2.启动出现错误GlobalAuthenticationConfigurerAdapter.class错误
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to process import candidates for configuration class [com.xxx.xxx.xxx.xxxx]; nested exception is java.io.FileNotFoundException: class path resource [org/springframework/security/config/annotation/authentication/configurers/GlobalAuthenticationConfigurerAdapter.class] cannot be opened because it does not exist at org.springframework.context.annotation.ConfigurationClassParser.processImports(ConfigurationClassParser.java:599) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE] at org.springframework.context.annotation.ConfigurationClassParser.access$900(ConfigurationClassParser.java:108) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE] at
] … xxx common frames omitted
解决:这个是在 spring-boot-starter-security 依赖中的 属于安全配置类, 而 引入的activiti-spring-boot-starter-basic 依赖中存在了一个自动安全配置类, 两个安全配置, 所以排除掉 activiti-spring-boot-starter-basic中的安全配置类 SecurityAutoConfiguration , 在启动类配置 (注意不要导错包,正确的包为org.activiti.spring.boot.SecurityAutoConfiguration):
import org.activiti.spring.boot.SecurityAutoConfiguration;