java - 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?
我究竟做错了什么 ?如果您需要更多详细信息,请告诉我。
感谢您的帮助。
解决方案
好的,我终于成功了!感谢@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>
谢谢你们每一个人的帮助 !
推荐阅读
- mysql - 尝试创建检查数据的函数时出现 MySQL 错误代码?
- reactjs - React webpack 生产构建失败
- swift - TableView 行不会将数据携带到新部分
- sql - 模式中的天数
- ruby-on-rails-5 - Rails 5 I18n default_locale 和后备语言环境
- angular - Angular 6 的自定义排序管道
- c# - 如何使用 SqlCommand 在查询中获得一些结果
- grails - 将文件的内容显示到 grails 页面?
- javascript - CSS - 如果元素用于事件功能,则无法在 CSS 中调用元素
- eclipse - 防止 Eclipse 自动完成在导入末尾添加星号、星号、通配符