使用spring-batch 2.1.8.RELEASE命名Spring Batch的约定让我很困惑.
主要问题:
2个不同的工作,但内部具有相同的步骤(将获得不同的属性),这个名称不是唯一的.如果我尝试运行其中一个作业,例如job1.然后它获得prop2的值“file2”,即使它是为job2定义的. (只有一个抽象示例,没有那么多的stepamount,听众等细节.)无法弄清楚该过程的任何规律性或原因.
<batch:job id="job1" parent="parentJob">
<batch:step id="copyFile">
<batch:tasklet>
<bean class="xxx.xyz.classXXX"
scope="step">
<property name="prop1"
value="file1" />
</bean>
</batch:tasklet>
</batch:step>
</batch>
每个作业都在自己的文件中定义.
<batch:job id="job2" parent="parentJob">
<batch:step id="copyFile">
<batch:tasklet>
<bean class="xxx.xyz.classXXX"
scope="step">
<property name="prop2"
value="file2" />
</bean>
</batch:tasklet>
</batch:step>
</batch>
我们有大约80个工作 – 每个工作都有copyFile作为第一步.但是每个工作中间也有一些步骤,应该平等地命名.是否有可能避免那些注入混乱/失败?除了命名步骤,如“copyFile1”,“copyFile2”等等.
(名称和属性只不过是烟雾和镜子!)
您还需要进一步的信息吗?希望我的解释不是太糟糕.先感谢您!
干杯最大
解决方法:
显然,步骤id是春季批量的全局(今天检查).它们在创建上下文时被加载到地图中,并且因为它们具有相同的id,所以步骤读取为上次获胜.
此功能的解决方法:使用不同的步骤ID,例如使用等于batch的前缀:job id,如下所示:
<batch:job id="job1" parent="parentJob">
<batch:step id="job1_copyFile">
<batch:tasklet>
<bean class="xxx.xyz.classXXX" scope="step">
<property name="prop1" value="file1" />
</bean>
</batch:tasklet>
</batch:step>
</batch>
<batch:job id="job2" parent="parentJob">
<batch:step id="job2_copyFile">
<batch:tasklet>
<bean class="xxx.xyz.classXXX" scope="step">
<property name="prop2" value="file2" />
</bean>
</batch:tasklet>
</batch:step>
</batch>