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;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) {
        MyExecutionListener.applicationContext = applicationContext;
    }

    @Override
    public 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

最近更新

  1. TCP协议是安全的吗?

    2024-01-26 15:52:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-26 15:52:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-26 15:52:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-26 15:52:03       20 阅读

热门阅读

  1. postgresql 表锁定问题处理

    2024-01-26 15:52:03       30 阅读
  2. 单元测试之道

    2024-01-26 15:52:03       27 阅读
  3. [NOIP2000 提高组] 单词接龙 C++

    2024-01-26 15:52:03       36 阅读
  4. 第九章:分布式训练

    2024-01-26 15:52:03       33 阅读
  5. [go] 备忘录模式

    2024-01-26 15:52:03       25 阅读
  6. SQL 系列教程(六)

    2024-01-26 15:52:03       24 阅读
  7. 0.0 pyside6--最美不过初相见

    2024-01-26 15:52:03       32 阅读
  8. 设计模式-策略模式

    2024-01-26 15:52:03       38 阅读
  9. 【ES6】Promise 使用

    2024-01-26 15:52:03       22 阅读