rav*_*ddy 5 parameters jobs custom-object spring-batch
我需要向Spring Batch Job发送一个自定义对象,该对象由项目处理器连续用于业务需求。
我们如何将自定义对象从外部发送到作业上下文。该对象在Job之间变化,并在运行时根据业务案例生成。
如何将其作为作业参数发送?还是有什么办法可以将此对象设置为相应的Job?
可以覆盖Spring JobParameter以任何方式对我有帮助吗?还是这种压倒性行为会导致任何大问题?
使用以下类发送 CustomObject。
public static class CustomJobParameter<T extends Serializable> extends JobParameter {
private T customParam;
public CustomJobParameter(T customParam){
super(UUID.randomUUID().toString());//This is to avoid duplicate JobInstance error
this.customParam = customParam;
}
public T getValue(){
return customParam;
}
}
Run Code Online (Sandbox Code Playgroud)
============================
发送参数:
JobParameters paramJobParameters = new JobParametersBuilder().addParameter("customparam", new CustomJobParameter<MyClass>(myClassReference)).toJobParameters();
检索参数:
MyClass myclass = (MyClass)jobExecution.getJobParameters().getParameters().get("customparam").getValue();
这个问题已在官方 Spring Batch 论坛上提出:http://forum.spring.io/forum/spring-projects/batch/96660-how-to-pass-complex-objects-to-job-launcher
当时有一个 Jira 是开放的,但开发人员选择不解决它(Won't fix): https: //jira.spring.io/browse/BATCH-966
这里讨论了或多或少相同情况的替代解决方案(将流作为 JobParameter 传递):将流作为参数传递给作业
总而言之,答案是否定的,您只能将原始类型作为 JobParameters 传递,并且不鼓励重写它。替代解决方案是使用参数声明并注入 Bean,或者使用静态变量在项目范围内访问它。
| 归档时间: |
|
| 查看次数: |
8899 次 |
| 最近记录: |