首页 > 解决方案 > Spring Batch - 使用 JdbcCursorItemReader 进行 Bean 继承

问题描述

我遇到了 Spring Batch 的问题,这通常很简单。

我有多个步骤,面向块处理。对于每个步骤,我都想使用相同的 ItemReader。

<bean id="myItemReader" class="org.springframework.batch.item.database.JdbcCursorItemReader"
          scope="step">
        <property name="dataSource" ref="dataSource" />
        <property name="sql"
                  value="select * from ...."/>
        <property name="rowMapper">
            <bean class="MyRowMapper" />
        </property>
</bean>

这是我的步骤声明:

<step id="mySpecificStep">
    <tasklet>
         <chunk reader="mySpecificItemReader"
                       writer="myItemWriter"
                       commit-interval="${commit-interval}"
                       skip-policy="skipPolicy">
         </chunk>
    </tasklet>
</step>

我的请求有一些参数,我想用 PreparedStatementSetter 替换它们。

所以我的意图是创建多个 bean(对于每个步骤),以便为每个 bean 调用特定的 PreparedStatement。

<bean id="mySpecificItemReader" parent="myItemReader" >
        <property name="preparedStatementSetter" ref="mySpecificStatement"/>
</bean>

<bean id="mySpecificStatement" class="PreparedStatementSpecificProduct">
        <property name="product" value="XXX" />
</bean>

我有以下错误:

Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'preparedStatementSetter' of bean class [org.springframework.aop.scope.ScopedProxyFactoryBean]: Bean property 'preparedStatementSetter' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

我究竟做错了什么 ?如果您需要更多详细信息,请告诉我。

感谢您的帮助。

标签: javaspringspring-batch

解决方案


好的,我终于成功了!感谢@M。Deinum,我在声明中使用了摘要。这是我的做法:

<bean id="myItemReader" class="org.springframework.batch.item.database.JdbcCursorItemReader"
          scope="step" abstact="true">
<bean id="mySpecificItemReader" parent="myItemReader" scope="step">
        <property name="preparedStatementSetter">
              <bean id="mySpecificStatement" class="PreparedStatementSpecificProduct">
                  <property name="product" value="XXX" />
              </bean>
        </property>
</bean>

谢谢你们每一个人的帮助 !


推荐阅读