无法在rowMapper中设置/获取属性值

时间:2016-02-25 21:46:09

标签: spring-batch

我试图在我的RowMapper中访问StepExecution但无法这样做。我在xml中设置了一个名为' prop1'的属性。我希望设置它,但它不是设置。我还在RowMapper中添加了一个@BeforeStep方法,希望我能得到stepExecutionContext但是从不调用这个方法。还有什么我需要做的吗?

这是我的xml:

<bean id="bean1"
class="org.springframework.batch.item.database.JdbcCursorItemReader"
scope="step">
<property name="dataSource" ref="dataSource" />
<property name="sql"
    value="${sql}"/>
<property name="fetchSize" value="${fetchSize}"></property>
<property name="rowMapper">
    <bean id="rowMapper1" class="c.p.MyRowMapper" scope="step">
        <property name="prop1" value="${prop1}"></property>
</property>

这是我的RowMapper:

public class MyRowMapper implements RowMapper<Object>{

  private String prop1;
  private StepExecution se;
  public String getProp1() {
      return stepFatpCount;
  }
  public void setProp1(String rop1) {
      this. prop1 = prop1;
  }

  @BeforeStep
  public void beforeStep(StepExecution stepExecution){

    this.se = stepExecution;

  }
}

我在stepExecutionContext中设置了一些属性,然后在另一个步骤中执行此步骤,我想在RowMapper中使用它们。同样的事情在ItemProcessor中工作,但不在RowMapper中。如果我需要为懒惰绑定或任何其他问题做更多的事情,请告诉我。 感谢。

1 个答案:

答案 0 :(得分:0)

步骤之间不共享步骤执行上下文。也许你的意思是工作执行背景?

我想你可以在步骤中使用rowMapper1标签注册<listeners>作为监听器,但是如果你只想从作业执行上下文中读取一些值,你可以使用

value="#{jobExecutionContext['foobar']}"

如果您确实希望从步骤执行上下文中注入一些值,则只需替换上面的stepExecutionContext