在工作环境中,有一种方法'参数所以a可以直接调用tasklet方法,如文档中所述"如果将tasklet指定为bean定义,则可以指定方法,并且POJO将适应Tasklet接口。建议的方法应该与Tasklet.execute(或子集)具有相同的参数,并且具有兼容的返回类型(boolean,void或RepeatStatus)。"我宣布了一个豆
<step id="carregaStep" next="iniciaStep">
<tasklet ref="atividadesTasklet" method="carregaAtividades"/>
</step>
我声明了一个扩展Tasklet的bean,我实现了一个方法:
public RepeatStatus carregaAtividades(StepContribution contribution, ChunkContext chunkContext) throws Exception
但是没有调用此方法。
我尝试搜索谷歌中的一个使用示例,但由于&#39;方法&#39;在一个常见的单词和谷歌无法搜索pontuation,如搜索&#34;方法=&#34;和&#34; tasklet&#34;。有人可以给我一个使用tasklet方法的例子吗?
<bean id="atividadesTasklet" class="br.mypackage.AtividadesTasklet" scope="step" />
public class AtividadesTasklet implements Tasklet{
public RepeatStatus carregarAtividades(StepContribution contribution, ChunkContext chunkContext) throws Exception {
return RepeatStatus.FINISHED;
}
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
return RepeatStatus.FINISHED;
}
}
<step id="carregaAtividadesStep" >
<tasklet ref="atividadesTasklet" method="carregarAtividades">
</tasklet>
</step>
答案 0 :(得分:1)
这似乎是一个错误。您正在使用的配置样式:
<tasket ref="myTasklet" method="myMethod"/>
是配置MethodInvokingTaskletAdapter
的简便方法。但是,该适配器不传递参数。如果您的方法没有参数,它就可以工作。我已记录问题BATCH-2397来跟踪此问题。
话虽如此,如果您愿意实施与Tasklet#execute
签名相匹配的方法,那么我建议您只执行Tasklet
接口并跳过此开销第一名。