Spring batch 未使用Spring批处理跳过策略

Spring batch 未使用Spring批处理跳过策略,spring-batch,Spring Batch,我在项目中使用以下设置来定义作业 在项目中,批处理作业在数据库中定义。下面的xml作业定义用作在运行时创建所有这些批处理作业的模板 这可以正常工作,除非数据处理器中出现BeanCreationException。发生此异常时,将从不调用跳过策略,而批处理将立即结束 原因可能是什么?为了使数据处理器中的每个异常都使用SkipPolicy,我必须做什么? 提前多谢 基督教徒 版本:spring batch 3.0.7 <batch:job id="MassenGevoJob" r

我在项目中使用以下设置来定义作业

在项目中,批处理作业在数据库中定义。下面的xml作业定义用作在运行时创建所有这些批处理作业的模板

这可以正常工作,除非数据处理器中出现BeanCreationException。发生此异常时,将从不调用跳过策略,而批处理将立即结束

原因可能是什么?为了使数据处理器中的每个异常都使用SkipPolicy,我必须做什么? 提前多谢 基督教徒

版本:spring batch 3.0.7

       <batch:job id="MassenGevoJob" restartable="true">
         <batch:step id="selectDataStep" parent="selectForMassenGeVoStep" next="executeProcessorStep" />
         <batch:step id="executeProcessorStep"
                allow-start-if-complete="true" next="decideExitStatus" >
                <batch:tasklet>
                              <batch:chunk reader="dataReader" processor="dataProcessor"
                                    writer="dataItemWriter" commit-interval="10"
                                    skip-policy="batchSkipPolicy">
                              </batch:chunk>
                              <batch:listeners>
                                    <batch:listener ref="batchItemListener" />
                                    <batch:listener ref="batchSkipListener" />
                                    <batch:listener ref="batchChunkListener" />
                              </batch:listeners>
                       </batch:tasklet>
                </batch:step>
         <batch:decision decider="failOnPendingObjectsDecider"
                id="decideExitStatus">
                <batch:fail on="FAILED_PENDING_OBJECTS" exit-code="FAILED_PENDING_OBJECTS" />
                <batch:next on="*" to="endFlowStep" />
         </batch:decision>
         <batch:step id="endFlowStep">
                <batch:tasklet ref="noopTasklet"></batch:tasklet>
         </batch:step>
         <batch:validator ref="batchParameterValidator" />
         <batch:listeners>
                <batch:listener ref="batchJobListener" />
         </batch:listeners>
   </batch:job>


A
BeanCreationException
实际上是不可跳过的,因为它通常发生在Spring批处理开始之前。这通常也是应用程序的致命错误(Spring无法创建您定义为对应用程序至关重要的组件)。如果这个bean的创建有问题并且没有问题,我建议在工厂中包装它的创建,这样您就可以控制创建这个bean时产生的任何异常。例如,如果您无法创建自定义的
项目处理器
,您的
FactoryBean
可以返回
直通处理器
,如果可以的话。

谢谢您的回答。我的问题不够精确。当dataProcessor尝试使用无效的构造函数参数applicationContext.getBean(…)实例化bean时,以及在应用程序成功启动之后,会发生bean创建异常。在这种情况下,我期待着我过去被称为“永远的基普政策”,但事实并非如此。步骤立即结束。。。