无法 set/get rowMapper 中的 属性 值
unable to set/get the property values in the rowMapper
我正在尝试访问我的 RowMapper 中的 StepExecution,但无法这样做。我在名为 'prop1' 的 xml 中设置了 属性。我希望它被设置,但它不是 setting.I 还向 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 中不起作用。如果我需要为延迟绑定或任何其他问题做更多的事情,请告诉我。
谢谢
步骤执行上下文不在步骤之间共享。也许你的意思是作业执行上下文?
我想您可以在步骤中将 rowMapper1
注册为侦听器(使用 <listeners>
标记),但是如果您只想从作业执行上下文中读取一些值,您可以使用
value="#{jobExecutionContext['foobar']}"
如果您确实想从步骤执行上下文中注入一些值,您只需替换上面的 stepExecutionContext
。
我正在尝试访问我的 RowMapper 中的 StepExecution,但无法这样做。我在名为 'prop1' 的 xml 中设置了 属性。我希望它被设置,但它不是 setting.I 还向 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 中不起作用。如果我需要为延迟绑定或任何其他问题做更多的事情,请告诉我。 谢谢
步骤执行上下文不在步骤之间共享。也许你的意思是作业执行上下文?
我想您可以在步骤中将 rowMapper1
注册为侦听器(使用 <listeners>
标记),但是如果您只想从作业执行上下文中读取一些值,您可以使用
value="#{jobExecutionContext['foobar']}"
如果您确实想从步骤执行上下文中注入一些值,您只需替换上面的 stepExecutionContext
。