【发布时间】:2019-11-25 12:44:11
【问题描述】:
我遇到了 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?
我做错了什么?如果您需要更多详细信息,请告诉我。
感谢您的帮助。
【问题讨论】:
-
对不起,你是对的,所以我已经删除了我的答案。让我重新看看你的设置。
-
您查看的是哪个版本的批处理?我正在查看的版本只有
sql属性的 getter。 -
我目前在 3.0.6.RELEASE。可悲的是,我无法升级它...
-
将父级标记为
abstract。
标签: java spring spring-batch