对于最新稳定版本,请使用Spring Batch Documentation 6.0.0spring-doc.cadn.net.cn

重复利用现有服务

批处理系统常与其他应用风格结合使用。最 Common 是一个在线系统,但它也可能支持集成,甚至支持厚客户端 通过移动每个应用风格使用的必要批量数据来实现应用。为此 原因在于,许多用户通常希望重用现有的DAO或其他服务 他们的批次工作。Spring容器本身让这变得相当简单,因为它允许任何 需要注入的类别。然而,也可能存在现有服务的情况 需要作为物品阅读器物品写手,要么满足 的依赖关系 又是春季班级,或者因为它确实是主班物品阅读器迈出一步。是的 为每个需要封装的服务写一个适配器类相当简单,但 由于这是一个非常普遍的问题,Spring Batch 提供了以下实现:题目阅读器适配器ItemWriterAdapter.两类都实现了标准的Spring 通过调用代理模式的方法,设置起来相当简单。spring-doc.cadn.net.cn

以下 Java 示例使用题目阅读器适配器:spring-doc.cadn.net.cn

Java 配置
@Bean
public ItemReaderAdapter itemReader() {
	ItemReaderAdapter reader = new ItemReaderAdapter();

	reader.setTargetObject(fooService());
	reader.setTargetMethod("generateFoo");

	return reader;
}

@Bean
public FooService fooService() {
	return new FooService();
}

以下XML示例使用了题目阅读器适配器:spring-doc.cadn.net.cn

XML 配置
<bean id="itemReader" class="org.springframework.batch.item.adapter.ItemReaderAdapter">
    <property name="targetObject" ref="fooService" />
    <property name="targetMethod" value="generateFoo" />
</bean>

<bean id="fooService" class="org.springframework.batch.item.sample.FooService" />

一个重要的点是,合同的targetMethod必须相同 作为:耗尽后,会回归.否则,返回对象.任何其他因素都会阻止框架知道处理何时结束, 这要么导致无限循环,要么错误失败,取决于实现方式 关于物品写手.spring-doc.cadn.net.cn

以下 Java 示例使用ItemWriterAdapter:spring-doc.cadn.net.cn

Java 配置
@Bean
public ItemWriterAdapter itemWriter() {
	ItemWriterAdapter writer = new ItemWriterAdapter();

	writer.setTargetObject(fooService());
	writer.setTargetMethod("processFoo");

	return writer;
}

@Bean
public FooService fooService() {
	return new FooService();
}

以下XML示例使用了ItemWriterAdapter:spring-doc.cadn.net.cn

XML 配置
<bean id="itemWriter" class="org.springframework.batch.item.adapter.ItemWriterAdapter">
    <property name="targetObject" ref="fooService" />
    <property name="targetMethod" value="processFoo" />
</bean>

<bean id="fooService" class="org.springframework.batch.item.sample.FooService" />