Spring MVC+MyBatis+Activiti企业级开发全栈指南

一、技术栈选型与架构设计

在构建企业级Java应用时,选择合适的技术栈至关重要。Spring MVC作为轻量级Web框架,提供清晰的MVC分层架构;MyBatis作为半自动ORM框架,兼顾灵活性与性能;Activiti作为开源工作流引擎,支持BPMN 2.0标准规范。三者组合可形成从前端请求处理到业务逻辑执行,再到流程管理的完整技术闭环。

典型四层架构设计包含:

  1. 表现层:Spring MVC控制器处理HTTP请求,通过注解配置路由(@Controller/@RequestMapping)
  2. 业务层:Service组件封装核心业务逻辑,配合事务管理(@Transactional)
  3. 持久层:MyBatis Mapper接口与XML映射文件实现数据持久化
  4. 流程层:Activiti引擎驱动业务流程,通过RepositoryService部署流程定义,RuntimeService管理流程实例

二、Spring MVC核心配置实践

1. 环境搭建与依赖管理

推荐使用Maven构建项目,核心依赖配置示例:

  1. <dependencies>
  2. <!-- Spring MVC -->
  3. <dependency>
  4. <groupId>org.springframework</groupId>
  5. <artifactId>spring-webmvc</artifactId>
  6. <version>5.3.20</version>
  7. </dependency>
  8. <!-- MyBatis集成 -->
  9. <dependency>
  10. <groupId>org.mybatis</groupId>
  11. <artifactId>mybatis-spring</artifactId>
  12. <version>2.0.7</version>
  13. </dependency>
  14. <!-- Activiti引擎 -->
  15. <dependency>
  16. <groupId>org.activiti</groupId>
  17. <artifactId>activiti-spring</artifactId>
  18. <version>7.1.0.M6</version>
  19. </dependency>
  20. </dependencies>

2. 关键组件配置

  • DispatcherServlet配置:在web.xml中配置前端控制器,或通过Java Config方式注册
  • 视图解析器:配置FreeMarker或Thymeleaf模板引擎
  • 异常处理:通过@ControllerAdvice实现全局异常捕获
  • 数据验证:集成Hibernate Validator实现JSR-303验证规范

三、MyBatis持久层开发进阶

1. 动态SQL构建技巧

MyBatis提供、、等标签实现复杂查询:

  1. <select id="findUsers" resultType="User">
  2. SELECT * FROM sys_user
  3. <where>
  4. <if test="name != null">AND user_name LIKE #{name}%</if>
  5. <if test="status != null">AND status = #{status}</if>
  6. <if test="deptIds != null">
  7. AND dept_id IN
  8. <foreach collection="deptIds" item="id" open="(" separator="," close=")">
  9. #{id}
  10. </foreach>
  11. </if>
  12. </where>
  13. </select>

2. 高级映射特性

  • 一对一关联:通过实现对象嵌套
  • 一对多关联:使用处理集合类型
  • 延迟加载:配置lazyLoadingEnabled优化性能
  • 存储过程调用:通过标签的statementType=”CALLABLE”实现

    四、Activiti工作流深度集成

    1. 流程建模与部署

    使用Activiti Modeler设计BPMN流程图,重点掌握:

    • 用户任务:指定流程执行人(assignee)
    • 网关:配置排他网关(Exclusive Gateway)实现条件分支
    • 服务任务:调用JavaDelegate实现自定义业务逻辑
    • 子流程:实现流程模块化设计

    部署流程的两种方式:

    1. // 方式1:通过ZIP包部署
    2. repositoryService.createDeployment()
    3. .addClasspathResource("processes/expense.bpmn20.xml")
    4. .deploy();
    5. // 方式2:动态创建流程定义
    6. BpmnModel model = new BpmnModel();
    7. Process process = new Process();
    8. model.addProcess(process);
    9. repositoryService.createDeployment()
    10. .addBpmnModel("dynamic-process.bpmn", model)
    11. .deploy();

    2. 运行时流程管理

    核心API操作示例:

    1. // 启动流程实例
    2. runtimeService.startProcessInstanceByKey("expenseProcess");
    3. // 查询任务列表
    4. List<Task> tasks = taskService.createTaskQuery()
    5. .taskAssignee("zhangsan")
    6. .list();
    7. // 完成任务
    8. taskService.complete(taskId, variables);
    9. // 流程实例监控
    10. ProcessInstance instance = runtimeService.createProcessInstanceQuery()
    11. .processInstanceId(processInstanceId)
    12. .singleResult();

    3. 高级特性实现

    • 会签处理:通过MultiInstanceLoopCharacteristics配置多实例任务
    • 流程版本控制:使用DeploymentBuilder的enableDuplicateFiltering()方法
    • 历史数据查询:通过HistoryService获取流程执行轨迹
    • 异步任务:配置AsyncExecutor实现异步执行

    五、企业级应用开发实践

    1. 三框架集成方案

    配置Activiti与Spring事务管理:

    1. @Configuration
    2. public class ActivitiConfig {
    3. @Bean
    4. public SpringProcessEngineConfiguration processEngineConfiguration(
    5. DataSource dataSource, PlatformTransactionManager transactionManager) {
    6. return new SpringProcessEngineConfiguration()
    7. .setDataSource(dataSource)
    8. .setTransactionManager(transactionManager)
    9. .setDatabaseSchemaUpdate("true")
    10. .setAsyncExecutorActivate(false);
    11. }
    12. }

    2. 典型业务场景实现

    请假流程示例

    1. 员工提交申请(表单数据绑定到流程变量)
    2. 自动路由至直属领导审批
    3. 根据金额阈值触发财务会签
    4. 审批通过后更新HR系统状态
    5. 发送审批结果通知

    3. 性能优化策略

    • 数据库优化:配置合适的索引策略,使用连接池
    • 异步处理:将耗时操作放入消息队列
    • 缓存机制:对频繁查询的流程定义使用二级缓存
    • 集群部署:配置流程引擎集群模式

    六、开发调试与运维技巧

    1. 日志配置:通过logback.xml调整各框架日志级别
    2. 流程图渲染:集成Activiti Modeler实现可视化监控
    3. 热部署方案:使用JRebel实现代码修改即时生效
    4. 版本回滚:通过流程定义ID实现流程实例迁移

    本技术方案通过系统化的知识架构和丰富的实践案例,帮助开发者全面掌握三大框架的集成开发能力。从基础环境搭建到复杂业务场景实现,每个技术点都配备可运行的代码示例和配置说明,特别适合需要快速构建企业级工作流系统的开发团队参考使用。