gpt4 book ai didi

java - Spring Batch - 使用 JdbcCursorItemReader 进行 Bean 继承

转载 作者:行者123 更新时间:2023-12-01 19:57:06 43 4
gpt4 key购买 nike

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

我有多个步骤,面向 block 处理。对于每个步骤,我想使用相同的 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>

谢谢大家的帮助!

关于java - Spring Batch - 使用 JdbcCursorItemReader 进行 Bean 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59032135/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com