gpt4 book ai didi

java - 根据 JobParameters 动态切换 ItemProcessor

转载 作者:行者123 更新时间:2023-11-29 05:30:18 24 4
gpt4 key购买 nike

以下是阅读器bean的代码示例

<bean id="reader"
class="org.springframework.batch.item.database.JdbcCursorItemReader"
scope="step">
<property name="dataSource" ref="dataSource" />
<property name="sql"
value="#{@sqlStatements[jobParameters['key']]}" />
<property name="rowMapper" ref="#{jobParameters['key'] + 'Mapper'}" />
</bean>

<util:map id="sqlStatements"/> .我有一个类似的作家 bean 。我想要一个处理器的动态切换器。界面ItemProcessor<I,O>需求I & O值得一提的是,要么我必须以某种方式切换它,要么创建一个自定义的 ItemProcessor。

我试过下面的代码,但没有用。

<batch:job id="springBatch">
<batch:step id="step1">
<batch:tasklet>
<batch:chunk reader="reader" processor="#{jobParameters['key'] + 'Processor'}"
writer="writer" commit-interval="1"></batch:chunk>
</batch:tasklet>
</batch:step>
</batch:job>

它给出了一个org.springframework.expression.spel.SpelEvaluationException对于 jobParameters,可能是因为 scope=step没有为它定义。

有人可以为此提供替代方案吗?

最佳答案

使用 Classifier 可以简化此问题的很多解决方案:创建自定义 ItemProcessor<Object, Object>并注入(inject) Classifier<Class, ItemProcessor> ( PatternMatchingClassifier 可以装)和 ItemProcessor.process()使用分类器检测正确的处理器。
另请参阅 ClassifierCompositeItemWriter .

关于java - 根据 JobParameters 动态切换 ItemProcessor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21323191/

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