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

activiti解决实现ExecutionListener spring 自动注入@Autowired为null问题

在 Activiti 中,当使用 ExecutionListener 时,Spring 的自动注入机制(例如 @Autowired)可能无法正常工作。这是因为 ExecutionListener 是由 Activiti 管理的,并不是由 Spring 管理的,所以无法通过 @Autowired 注解进行自动注入。

要解决这个问题,可以手动获取 Spring 上下文中的 bean 并进行注入。下面是一个示例代码,演示了如何在 ExecutionListener 中手动注入 Spring 的 bean:

import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.ExecutionListener;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;@Component
public class MyExecutionListener implements ExecutionListener, ApplicationContextAware {private static ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) {MyExecutionListener.applicationContext = applicationContext;}@Overridepublic void notify(DelegateExecution execution) throws Exception {MyService myService = applicationContext.getBean(MyService.class);myService.doSomething();}
}

在这个例子中,我们实现了 ApplicationContextAware 接口,并且在 setApplicationContext 方法中保存了 Spring 上下文。

在 notify 方法中,我们可以通过 applicationContext.getBean(Class) 方法获取到需要注入的 bean(例如 MyService)。然后我们可以在 ExecutionListener 中使用这个 bean 执行业务逻辑。

注意,你可能需要将 MyExecutionListener 注册到 Activiti 的配置中,在配置文件(例如 activiti.cfg.xml)中添加以下代码:

<bean id="myExecutionListener" class="com.example.MyExecutionListener"/>

希望这个示例可以帮助你解决在 Activiti 的 Exec

http://www.lryc.cn/news/290656.html

相关文章:

  • 【Lazy ORM 整合druid 实现mysql监控】
  • 【Deeplabv3+】Ubutu18.04中使用pytorch复现Deeplabv3+第三步)-----CityscapesScripts生成自己的标签
  • 《动手学深度学习(PyTorch版)》笔记3.3
  • OpenGL ES 渲染 NV21、NV12 格式图像有哪些“姿势”?
  • P8813 [CSP-J 2022] 乘方 题解
  • Ubuntu 常用命令、docker 常用命令、unzip常用命令、tar常用命令
  • 保护医疗数据不受威胁:MPLS专线在医疗网络安全中的角色
  • Java面试题夺命连环问
  • 华为策略路由+NQA配置
  • 逆置字符串
  • 第九节HarmonyOS 常用基础组件14-DataPanel
  • Vue开发之proxy代理的配置(附带uniapp代理配置)
  • 【数据分享】2023年我国省市县三级的公司企业数量(21类公司企业/Excel/Shp格式)
  • 6JS对象
  • 粒子群算法求解港口泊位调度问题(MATLAB代码)
  • idea控制台出现乱码的解决方案
  • R语言【taxlist】——summary(),show(),print():打印taxlist对象及其内容的概述
  • 【深度学习】sdxl中的 text_encoder text_encoder_2 区别
  • 上位机图像处理和嵌入式模块部署(python opencv)
  • 父元素flex:1 高度却被子元素撑开的问题
  • 【LUA】mac状态栏添加天气
  • 网络原理-TCP/IP(1)
  • C# Socket 允许控制台应用通过防火墙
  • Centos安装mysql/mariadb
  • 2024 年, Web 前端开发趋势
  • Mysql 插入数据
  • 【每日一题】YACS 473:栈的判断
  • Python - 整理 MySQL 慢查询日志
  • Python算法题集_无重复字符的最长子串
  • 12.Elasticsearch应用(十二)