Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring批处理:用于Spring批处理元数据表的内存数据库_Spring_Spring Batch_Datasource - Fatal编程技术网

Spring批处理:用于Spring批处理元数据表的内存数据库

Spring批处理:用于Spring批处理元数据表的内存数据库,spring,spring-batch,datasource,Spring,Spring Batch,Datasource,我使用SpringBatch从Oracle数据库读取数据,并将结果写入CSV文件 我还需要将spring批处理元数据表与oracle数据库分开,为此,我在批处理配置中配置了两个不同的数据源(spring批处理元数据的内存数据库) 这是我的密码: BatchConfiguration.java @Configuration @EnableBatchProcessing @EnableScheduling public class BatchConfiguration { @Autowired

我使用SpringBatch从Oracle数据库读取数据,并将结果写入CSV文件

我还需要将spring批处理元数据表与oracle数据库分开,为此,我在批处理配置中配置了两个不同的数据源(spring批处理元数据的内存数据库)

这是我的密码:

BatchConfiguration.java

@Configuration
@EnableBatchProcessing
@EnableScheduling
public class BatchConfiguration {

  @Autowired
  public JobBuilderFactory jobBuilderFactory;

  @Autowired
  public StepBuilderFactory stepBuilderFactory;    


  @Bean
  @Qualifier("businessDataSource")
  @ConfigurationProperties(prefix = "spring.business.datasource")
  public DataSource primaryDataSource() {
    return DataSourceBuilder.create().build();
  }

  @Bean
  @Primary
  @Qualifier("metadataDataSource")
  @ConfigurationProperties(prefix = "spring.metadata.datasource")
  public DataSource secondaryDataSource() {
    return DataSourceBuilder.create().build();
  }
}
然后我的itemReader bean看起来像:

@Bean
public ItemReader<Person> reader(@Qualifier("businessDataSource") DataSource dataSource) {
  .....
}
批处理正在尝试使用my business数据库的元数据数据库:

原因:org.springframework.jdbc.badsqlgramarexception:正在执行查询;糟糕的SQL语法

我的代码中有问题吗


非常感谢

我终于找到了解决办法

我的读者bean是:

@Bean
public ItemReader<Person> reader(@Qualifier("businessDataSource") DataSource dataSource) {
  databaseReader.setDataSource(datasource);
   ....
}
@Bean
公共ItemReader阅读器(@Qualifier(“businessDataSource”)数据源数据源){
databaseReader.setDataSource(datasource);
....
}
我改变了它(现在它开始工作了)

@Bean
公共项目阅读器(){
JdbcCursorItemReader databaseReader=新的JdbcCursorItemReader();
setDataSource(primaryDataSource());
....
}

我终于找到了解决办法

我的读者bean是:

@Bean
public ItemReader<Person> reader(@Qualifier("businessDataSource") DataSource dataSource) {
  databaseReader.setDataSource(datasource);
   ....
}
@Bean
公共ItemReader阅读器(@Qualifier(“businessDataSource”)数据源数据源){
databaseReader.setDataSource(datasource);
....
}
我改变了它(现在它开始工作了)

@Bean
公共项目阅读器(){
JdbcCursorItemReader databaseReader=新的JdbcCursorItemReader();
setDataSource(primaryDataSource());
....
}

为什么在
secondary数据源上注释
@Primary
?您好,因为AbstractBatchConfiguration需要一个bean,但找到了2个:org.springframework.batch.core.configuration.annotation.AbstractBatchConfiguration中的Field dataSource需要一个bean,但找到了2个:-primaryDataSource:由类路径资源[com/example/batchprocessing/BatchConfiguration.class]中的方法“primaryDataSource”定义,-secondaryDataSource:由类路径资源[com/example/batchprocessing/BatchConfiguration.class]中的方法“secondaryDataSource”定义为什么要在
secondaryDataSource
上注释
@Primary
?您好,因为AbstractBatchConfiguration需要一个bean,但找到了2个:org.springframework.batch.core.configuration.annotation.AbstractBatchConfiguration中的Field dataSource需要一个bean,但找到了2个:-primaryDataSource:由类路径资源[com/example/batchprocessing/BatchConfiguration.class]中的方法“primaryDataSource”定义,-secondaryDataSource:由类路径资源[com/example/batchprocessing/BatchConfiguration.class]中的方法“secondaryDataSource”定义
@Bean
  public ItemReader<Person> reader() {
    JdbcCursorItemReader<Person> databaseReader = new JdbcCursorItemReader<>();
    databaseReader.setDataSource(primaryDataSource());
    ....
  }