SpringBoot2+mybatisPlus3+activiti6整合,踩的坑

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43914888/article/details/100132464

activiti这块骨头终于啃完了,然而刚从坑里爬出来,又一个大坑等着我,在和SprigBoot2+MybatisPlus+activiti6整合时,有一出现了问题,浪费了一个上午终于把它解决了,在这里做个记录。

MybatisPlus+Activiti6

用MybatisPlus和activiti整合也出现了问题,真的是头大。刚开始以为版本冲突,还了好多版本都不行,最后得出的结论是因为mybatisplus,要求用mybatis3.4.6,而activiti用的是mybatis3.4.2,两边有冲突。
解决办法:将activiti中排除掉
第一种

 	 
            <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter-basic</artifactId>
            <version>6.0.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
      

第二种

        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-engine</artifactId>
            <version>6.0.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring</artifactId>
            <version>6.0.0</version>
        </dependency>

SpringBoot2+Activiti6

关于他俩整合相关文档太多,得益于这篇博客,让我我少走很多弯路
https://blog.csdn.net/qq_22849235/article/details/100015752
首先他俩整合,两种方式

第一种方式

		<dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-engine</artifactId>
            <version>6.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring</artifactId>
            <version>6.0.0</version>
        </dependency>

这个如果你用的时mybatis时没有问题的,它需要写一个配置文件,会在你启动项目时,加载上面的配置类,会自动检测数据库中是否存在activiti数据库表结构,如果不存在,则自动创建表并执行初始化部署流程;若已有activiti表结构,则只执行初始化部署流程操作。
配置类我就粘上了,省的找(数据源自己配)

import org.activiti.engine.*;
import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.ResourcePatternResolver;

import javax.sql.DataSource;
import java.io.IOException;


@Configuration
public class ActivitiConfig {

    @Autowired
    private DataSource dataSource;
    @Autowired
    private ResourcePatternResolver resourceLoader;

    /**
     * 初始化配置,将创建28张表
     * @return
     */
    @Bean
    public StandaloneProcessEngineConfiguration processEngineConfiguration() {
        StandaloneProcessEngineConfiguration configuration = new StandaloneProcessEngineConfiguration();
        configuration.setDataSource(dataSource);
        configuration.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
        configuration.setAsyncExecutorActivate(false);
        return configuration;
    }

    @Bean
    public ProcessEngine processEngine() {
        return processEngineConfiguration().buildProcessEngine();
    }

    @Bean
    public RepositoryService repositoryService() {
        return processEngine().getRepositoryService();
    }

    @Bean
    public RuntimeService runtimeService() {
        return processEngine().getRuntimeService();
    }

    @Bean
    public TaskService taskService() {
        return processEngine().getTaskService();
    }

}

第二种方式

		<dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter-basic</artifactId>
            <version>6.0.0</version>
        </dependency>

关于这种方式相关博客好多,但是我用了不起作用,不知是何种原因可能我用的时mybatisplus?不纠结这个。
关于这种方式整合出现问题是因为activiti6.0.0出来的时候springboot2.0还没有出来,activiti6.0.0 支持springboot1.2.6以上,2.0.0以下的版本。
报的那个错分析完实际上是ClassNotFound,说是准确来说是spring boot2把一些类的package改了:
spring boot 1里类名是:
org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration
spring boot 2里类名是:
org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration

解决办法:

1,在启动类上将这个排除掉就行了

@SpringBootApplication(exclude = SecurityAutoConfiguration.class)

2,将SpringBoot版本降低到1.x版本
3,修改源码的集成问题,重新编译

SpringBoot2+MybatisPlus+Activiti6

最后我用的完整依赖组合:
SpringBoot

	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

mybatisPlus

		<!--mybatisplus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.1</version>
        </dependency>
        <!--添加 代码生成器 依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.1.1</version>
        </dependency>
        <!--模板引擎 freemarker-->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.28</version>
        </dependency>
		

activiti

		<!--activiti-->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-engine</artifactId>
            <version>6.0.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring</artifactId>
            <version>6.0.0</version>
        </dependency>

猜你喜欢

转载自blog.csdn.net/weixin_43914888/article/details/100132464
今日推荐