Activiti监听器中获取Spring IOC中的Bean
Activiti监听器中的配置
Activiti的监听器不受SpringIOC管理,所以不能直接通过注入的方式来获取IOC中的Bean,
具体在监听器的配置是
比如我需要获取到IOC中的UserService
public class TaskListenerImpl implements TaskListener{
@Override
public void notify(DelegateTask delegateTask) {
ServletRequestAttributes requestAttribute = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request = requestAttribute.getRequest(); //首先通过解耦合的方式获取到request
//获得IOC容器
WebApplicationContext applicationContext = WebApplicationContextUtils.
getWebApplicationContext(request.getServletContext());
//从IOC容器中取出bean
UserService userService = applicationContext.getBean(UserService.class);
User user = userService.getUser(id); //这样就可以使用了
delegateTask.setAssignee(user.getName()); //设置任务办理人
}
}
完成
谢谢大家!!