【问题标题】:Spring Batch how can I access the stepExection in a PartitionerSpring Batch如何访问分区器中的stepExection
【发布时间】:2014-06-20 14:04:15
【问题描述】:

我有以下 TicketProductPartitioner 类和上下文。我已将 bean 范围设置为 step 并正在设置参考

<!-- Ticket partitioner into 15 steps -->
<bean id="ticketProductPartitioner" parent="abstractAttributionStep" class="a.b.c.batch.TicketProductPartitioner" scope="step">
    <property name="stepExecution" value="#{stepExecution}"/>
</bean>         

我的课是

public class TicketProductPartitioner implements Partitioner {

    private StepExecution stepExecution = null;

    /**
     * Create a ExecutionContext for each sub ticket of todays job
     */
    public Map<String, ExecutionContext> partition(int gridSize) {
        Map<String, ExecutionContext> result = new HashMap<String, ExecutionContext>();
        Date runDate = (Date) getStepExecution().getExecutionContext().get(AttributionParameter.RUN_DATE.name());
        logger.info("Start TicketProductPartitioner job for run_date "+runDate);

但似乎 stepExecution 引用始终为空。如果这是一个简单的处理器 bean,那么这种接线就可以工作,那么现在我处于分区步骤有什么不同?

【问题讨论】:

    标签: spring spring-batch


    【解决方案1】:

    StepExecution 不能使用 spEL 直接绑定,但必须注入让 TicketProductPartitioner 实现 StepExecutionListener 使用 @BeforeStep 注释标记分区器方法;这就是您的类字段为空的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      • 2020-11-15
      • 2023-04-04
      相关资源
      最近更新 更多