问题:在Activiti监听器中用@Autowirde注入的bean(比如我们自己写的service等)是null,注入不进去。
原因:Activiti监听器是交给Tomcat容器管理的,而@Autowirde注解是交给Spring容器管理的,tomcat自然是无法解析@Autowirde注解的,肯定是注入不进去的。
解决:把监听器也注成bean,交给spring管理,这样就可以随意注入我们需要的bean了。
步骤:1. 给监听器类加上@Component注解,把监听器交给spring管理。如图:
(你以为这样就ok了?大错特错,重点是第2步)
2. 在bpmn流程图上配置监听器时,用DelegateExpression(代理表达式),DelegateExpression中的变量名要和监听器类上注入的bean名一致。如图:
bpmn文件:
OK,你我的问题都解决了,终于可以在监听器中自由注入了,哈哈。