java - Flowable服务任务中的Spring bean注入问题
问题描述
关于Flowable的服务任务中的spring bean注入问题,为什么只有这种带有static修饰符的注入起作用,它的逻辑是什么?
我必须在 Flowable java 服务任务中注入一个 spring bean,并且我测试了一些不同类型的注入字段、构造函数和 setter 注入,最终使用 static 修饰符的 setter 注入为我工作,如下所示:
public class GetCurrentUserDlg implements JavaDelegate {
private static PersonService personService;
@Autowired
public void setPersonService(PersonService personService) {
this.personService = personService;
}
@Override
public void execute(DelegateExecution execution) {
personService.getCurrentUser();
}
}
解决方案
虽然我无法回答您的问题,但以下内容对我来说很好:
public class SomeDelegate implements JavaDelegate {
@Autowired
private SomeBean bean;
@Override
public void execute(DelegateExecution execution) {
System.out.println(this.bean);
}
}
然后在该过程中使用该类flowable:class="packages.SomeDelegate"
但是,请注意,您可能在SomeBean
bean 中自动装配依赖项时遇到问题。使用该flowable:class
属性时不会注入此依赖项。为了使它工作,您必须自己制作SomeDelegate
一个实际的bean(例如 via @Service
)并在您的流程定义中使用它 viaflowable:delegateExpression="${someDelegate}"
例子:
@Service("someDelegate")
public class SomeDelegate implements JavaDelegate {
...
和
<serviceTask id="doSomething" name="Do Something" flowable:delegateExpression="${someDelegate}"/>
推荐阅读
- android - 我可以在 Firebase Cloud Functions 中运行非常繁重的任务并监控我的应用程序的进度吗?
- django - 如何使用 NGINX 和 gunicorn 查看 Django 错误
- sql-server - 声明表,插入表,选择不同
- c# - 找不到类型或命名空间 AggregateArgs mognodb C#
- c - int_least16_t 是否有可能成为 int 的别名而不是 short 的别名?
- java - 如何使用“localDate”从 DOB 获取 AGE,而不是使用 - 用户输入 - 写入“当前年份”?
- angular - 我们如何使用 *ngFor 在 angular6 中进行迭代以在 angular6 中一次显示 3 张图像
- excel - 在excel的列中放置任何值(如99)代替0的公式
- git - 如何使用 git push 接收挂钩将分支部署到远程?
- webassembly - 使用 webassembly 还是不使用?