Spring batch 自定义itemreader引发ReaderNotOpenException
我有一个定制的项目阅读器,如下所示Spring batch 自定义itemreader引发ReaderNotOpenException,spring-batch,Spring Batch,我有一个定制的项目阅读器,如下所示 class MyReader implements ItemReader<MyBean>, ItemStream{ SingleItemPeekableItemReader<MyBean> myBeanPeekableReader; public SingleItemPeekableItemReader<MyBean> getMyBeanPeekableReader() { ret
class MyReader implements ItemReader<MyBean>, ItemStream{
SingleItemPeekableItemReader<MyBean> myBeanPeekableReader;
public SingleItemPeekableItemReader<MyBean> getMyBeanPeekableReader() {
return myBeanPeekableReader;
}
public void setMyBeanPeekableReader(
SingleItemPeekableItemReader<MyBean> myBeanPeekableReader) {
this.myBeanPeekableReader = myBeanPeekableReader;
}
@Resource
public void caller(ItemReader<MyBean> myJdbcReader){
myBeanPeekableReader.setDelegate(myJdbcReader);
}
@Override
public void close() throws ItemStreamException {
myBeanPeekableReader.close();
}
@Override
public void open(ExecutionContext arg0) throws ItemStreamException {
myBeanPeekableReader.open(arg0);
}
@Override
public void update(ExecutionContext arg0) throws ItemStreamException {
// TODO Auto-generated method stub
}
MyReader类实现ItemReader、ItemStream{
SingleItemPeakableItemReader MyBeanPeakableReader;
public singleItemPeakableItemReader getMyBeanPeekableReader(){
返回mybeanpeekablerheader;
}
公共无效设置MyBeanPeekablerReader(
SingleItemPeakableItemReader(MyBeanPeakableReader){
this.mybeanpeekablerreader=mybeanpeekablerreader;
}
@资源
公共无效调用方(ItemReader myJdbcReader){
setDelegate(myJdbcReader);
}
@凌驾
public void close()引发ItemStreamException{
mybeanpeekablerreader.close();
}
@凌驾
public void open(ExecutionContext arg0)抛出ItemStreamException{
mybeanpeekablerreader.open(arg0);
}
@凌驾
公共无效更新(ExecutionContext arg0)引发ItemStreamException{
//TODO自动生成的方法存根
}
扩展JdbcCursorItemReader的类:
import javax.annotation.Resource;
import javax.sql.DataSource;
import org.springframework.batch.item.database.JdbcCursorItemReader;
import org.springframework.jdbc.core.PreparedStatementSetter;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Component;
@Component("myJdbcReader")
public class MyJdbcReader extends JdbcCursorItemReader<MyBean> {
private String sql = "Select * from mytable";
MyJdbcReader(){
super.setSql(sql);
}
@Override
@Resource
public void setDataSource(DataSource dataSource){
super.setDataSource(dataSource);
}
@Override
@Resource
public void setRowMapper(RowMapper myRowMapper){
super.setRowMapper(myRowMapper);
}
@Override
@Resource
public void setPreparedStatementSetter(PreparedStatementSetter myPrepSetter){
super.setPreparedStatementSetter(myPrepSetter);
}
}
import javax.annotation.Resource;
导入javax.sql.DataSource;
导入org.springframework.batch.item.database.jdbcursoritemreader;
导入org.springframework.jdbc.core.PreparedStatementSetter;
导入org.springframework.jdbc.core.RowMapper;
导入org.springframework.stereotype.Component;
@组件(“myJdbcReader”)
公共类MyJdbcReader扩展了JdbcCursorItemReader{
私有字符串sql=“从mytable中选择*”;
MyJdbcReader(){
super.setSql(sql);
}
@凌驾
@资源
public void setDataSource(数据源数据源){
super.setDataSource(数据源);
}
@凌驾
@资源
公共void setRowMapper(RowMapper myRowMapper){
super.setRowMapper(myRowMapper);
}
@凌驾
@资源
public void setPreparedStatementSetter(PreparedStatementSetter myPrepSetter){
super.setPreparedStatementSetter(myPrepSetter);
}
}
即使在实现ItemStream之后,它也会抛出异常ReaderNotFound。有人能告诉我哪里出了问题吗。可能的重复项也请共享您的XML配置文件。您在应用程序中如何使用它们?能否发布异常堆栈跟踪?这是否回答了您的问题?