Datasource 为自定义itemWriter设置数据源(spring批处理)

Datasource 为自定义itemWriter设置数据源(spring批处理),datasource,spring-batch,Datasource,Spring Batch,我想使用自定义itemWriter从数据库读取数据并写入另一个数据库。 如何设置自定义itemWriter的数据源?请查看此示例项目 下面是自定义ItemWriter的示例代码 import javax.annotation.Resource; import javax.sql.DataSource; import org.springframework.batch.item.database.JdbcBatchItemWriter; import org.springframework.st

我想使用自定义itemWriter从数据库读取数据并写入另一个数据库。
如何设置自定义itemWriter的数据源?

请查看此示例项目

下面是自定义
ItemWriter
的示例代码

import javax.annotation.Resource;
import javax.sql.DataSource;

import org.springframework.batch.item.database.JdbcBatchItemWriter;
import org.springframework.stereotype.Component;

import com.x.y.z.MyBean;

@Component("myJdbcWriter")
public class MyCustomJdbcWriter extends JdbcBatchItemWriter<MyBean> {

    MyCustomJdbcWriter() {

    }

    @Override
    @Resource
    public void setDataSource(DataSource dataSource) {
        super.setDataSource(dataSource);
    }

    // define other methods also that you want to override in the same manner

}
import javax.annotation.Resource;
导入javax.sql.DataSource;
导入org.springframework.batch.item.database.JdbcBatchItemWriter;
导入org.springframework.stereotype.Component;
导入com.x.y.z.MyBean;
@组件(“myJdbcWriter”)
公共类MyCustomJdbcWriter扩展了JdbcBatchItemWriter{
MyCustomJdbcWriter(){
}
@凌驾
@资源
public void setDataSource(数据源数据源){
super.setDataSource(数据源);
}
//还定义要以相同方式重写的其他方法
}
可以使用Spring的自动检测功能,也可以在SpringXML配置文件中定义一个bean,如下所示,并在各自的作业中使用该bean

<bean id="myJdbcWriter" class="com.x.y.z.MyCustomJdbcWriter"
    scope="step">
    <property name="dataSource" ref="dataSource" />
</bean>


非常感谢您的回答。我已经尝试过了,它给了我一个例外:java.lang.IllegalArgumentException:需要一个SQL语句。我尝试添加一个sql属性,但由于这是一个编写器,我看不出我可以使用哪种类型的sql请求。
需要一个sql语句
。这是在谈论什么。我认为您没有提供读写器所需的所有属性。请再次查看。请共享您的配置文件。显然,这是一个“entityManagerFactory”问题。我刚刚更改了EntityManagerFactorybean的数据源。现在,它工作得很好。非常感谢你的帮助Braj!