当前位置: 首页 > news >正文

网站建设设计师招募重庆网络seo公司

网站建设设计师招募,重庆网络seo公司,安徽智能网站建设哪里有,花生壳 做网站一、为什么需要容器集成?——引擎的“自动驾驶模式” 1. 传统模式 vs 容器模式 对比项传统模式(手动挡)Spring容器模式(自动挡)流程引擎创建手动编码初始化Spring自动装配ProcessEngine Bean事务管理手动控制提交/回…

一、为什么需要容器集成?——引擎的“自动驾驶模式”

1. 传统模式 vs 容器模式
对比项传统模式(手动挡)Spring容器模式(自动挡)
流程引擎创建手动编码初始化Spring自动装配ProcessEngine Bean
事务管理手动控制提交/回滚@Transactional注解自动管理
依赖注入手动获取Service@Autowired直接注入Service

核心目标:让开发者专注业务逻辑,告别繁琐的引擎配置!


二、Spring整合三步曲——引擎的“上牌仪式”

1. 添加Spring依赖

pom.xml中注入Spring与Activiti整合包:

<dependency>  <groupId>org.activiti</groupId>  <artifactId>activiti-spring</artifactId>  <version>5.22.0</version> <!-- 与原书版本一致 -->  
</dependency>  
<dependency>  <groupId>org.springframework</groupId>  <artifactId>spring-context</artifactId>  <version>5.3.10</version>  
</dependency>  
2. 配置Spring容器

创建applicationContext.xml,定义流程引擎与事务管理器:

<!-- 数据源配置 -->  
<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">  <property name="driverClass" value="org.h2.Driver"/>  <property name="url" value="jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000"/>  <property name="username" value="sa"/>  <property name="password" value=""/>  
</bean>  <!-- 事务管理器 -->  
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  <property name="dataSource" ref="dataSource"/>  
</bean>  <!-- Activiti流程引擎 -->  
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">  <property name="dataSource" ref="dataSource"/>  <property name="transactionManager" ref="transactionManager"/>  <property name="databaseSchemaUpdate" value="true"/>  
</bean>  <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">  <property name="processEngineConfiguration" ref="processEngineConfiguration"/>  
</bean>  <!-- 暴露Service Bean -->  
<bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService"/>  
<bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService"/>  
3. 注入Service Bean

在代码中直接使用@Autowired调用服务:

@Autowired  
private RuntimeService runtimeService;  public void startProcess() {  ProcessInstance instance = runtimeService.startProcessInstanceByKey("leaveProcess");  
}  

三、事务管理——流程的“安全带”

1. 声明式事务控制

使用@Transactional注解保证流程操作的原子性:

@Service  
public class LeaveService {  @Autowired  private RuntimeService runtimeService;  @Transactional  public void startAndCompleteProcess() {  ProcessInstance instance = runtimeService.startProcessInstanceByKey("leaveProcess");  Task task = taskService.createTaskQuery().processInstanceId(instance.getId()).singleResult();  taskService.complete(task.getId());  }  
}  
2. 事务回滚测试

若流程执行中抛出异常,Spring会自动回滚数据库操作:

@Transactional  
public void startProcessWithException() {  runtimeService.startProcessInstanceByKey("leaveProcess");  throw new RuntimeException("模拟异常"); // 流程启动操作将被回滚  
}  

四、与Spring其他模块的“联合作战”

1. 整合Spring Security

控制任务权限:

@Configuration  
@EnableWebSecurity  
public class SecurityConfig extends WebSecurityConfigurerAdapter {  @Override  protected void configure(HttpSecurity http) throws Exception {  http.authorizeRequests()  .antMatchers("/task/**").hasRole("USER")  .anyRequest().permitAll();  }  
}  
2. 整合Spring Boot

简化配置(原书可能未涉及,此处简要扩展):

# application.yml  
spring:  activiti:  database-schema-update: true  check-process-definitions: false  datasource:  url: jdbc:h2:mem:activiti  driver-class-name: org.h2.Driver  username: sa  password:  

五、避坑指南——容器集成的“暗礁”

1. Bean注入失败

症状@Autowired的Service为null
检查项

  • 是否在Spring配置文件中正确定义了Service Bean(如repositoryService)。
  • 是否添加了<context:component-scan>扫描注解类。
2. 事务不生效

症状:异常后流程数据未回滚。
解法

  • 确保使用@Transactional注解,并启用事务管理器。
  • 检查方法是否为public(Spring事务代理要求)。

六、课后挑战——巩固你的“容器驾照”

  1. 选择题:Spring整合后,如何获取TaskService
    A. ProcessEngines.getDefaultProcessEngine().getTaskService()
    B. @Autowired private TaskService taskService
    C. 手动从ProcessEngine实例获取

  2. 实战题:在Spring容器中配置Activiti引擎,并实现一个定时任务自动清理历史数据(使用@Scheduled注解)。


http://www.dtcms.com/a/598162.html

相关文章:

  • -1网站建设购物中心网站建设
  • 量子计算自学记录
  • 儿童网站建设网站建设要考虑哪些内容
  • office online server
  • 【 Git:本地项目上传至 Gitee 仓库】
  • Hello-Agents task2 大语言模型基础
  • 机器学习“开箱即用“:Scikit-learn快速入门指南
  • 乐迪信息:智慧煤矿井下安全:AI 摄像机实时抓拍违规行为
  • 重庆免费自助建站模板电影网站制作模板
  • 轻松筹 做的网站价格网站建设赠送seo
  • 网站团队网上学习做网站
  • 悬镜安全源鉴SCA(软件成分分析)产品,开源商业化成果获肯定
  • 咸阳企业网站建设阳江做网站多少钱
  • 【C++基础与提高】第一章:走进C++的世界——从零开始的编程之旅
  • 建站一条龙设计制作百度正版下载并安装
  • GitCode 同步发布百度 ERNIE-4.5-VL-28B-A3B-Thinking 多模态大模型
  • 贴吧高级搜索windows优化大师官方免费
  • 网站及app开发招聘如何写好网站建设方案
  • Rotation.from_euler(‘xyz‘) Rotation.from_euler(‘XYZ‘)不同
  • 深度学习:python动物识别系统 YOLOv8模型 PyQt5 深度学习pytorch 计算机(建议收藏)✅
  • wap手机网站开发asp经验办公室装修铺哪种地板
  • K8S Base: 创建Job 与 CronJob
  • langgragh的思想与入门(一)
  • 网站开发任职要求免费网站空间注册
  • 借助LLama_Factory工具对大模型进行lora微调
  • 基于Springboot + vue3实现的渔具管理系统
  • 网站工作室设计数字营销的4个特征
  • Linux动静态库以及动静态链接
  • 一个关于python编程小白日记
  • 自己做一个外贸网站怎么样沪上装修排名前十有哪些品牌