【发布时间】:2019-03-08 08:59:07
【问题描述】:
我用 Java 8 新创建了 springboot 批处理应用程序,我想为 springbatch 表创建一个仅带有注释的数据库。
我想我必须创建配置文件,但我不知道该怎么做。
您可以在下面看到我想在我的 java 程序中使用注释重现的所有配置:
<!-- Base de donnees H2 pour les tables Spring Batch -->
<jdbc:embedded-database id="springBatchDataSource" type="H2">
<jdbc:script location="org/springframework/batch/core/schema-drop-h2.sql" />
<jdbc:script location="org/springframework/batch/core/schema-h2.sql" />
</jdbc:embedded-database>
<!-- TransactionManager Spring Batch -->
<bean id="springBatchTransactionManager" class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
<!-- JobRepository Spring Batch -->
<bean id="jobRepository" class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
<property name="dataSource" ref="springBatchDataSource" />
<property name="transactionManager" ref="springBatchTransactionManager" />
<property name="databaseType" value="H2" />
</bean>
我已添加以下代码:
@配置 公共类 ConfigBatch {
@Bean(destroyMethod = "shutdown")
public EmbeddedDatabase dataSourceH2() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2)
.addScript("classpath:org/springframework/batch/core/schema-drop-h2.sql")
.addScript("classpath:org/springframework/batch/core/schema-h2.sql").build();
}
@Bean
public SimpleJobLauncher jobLauncher() throws Exception {
final SimpleJobLauncher launcher = new SimpleJobLauncher();
launcher.setJobRepository(jobRepository());
return launcher;
}
@Bean
public JobRepository jobRepository() throws Exception {
final JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDatabaseType(DatabaseType.H2.getProductName());
factory.setDataSource(dataSourceH2());
factory.setTransactionManager(transactionManager());
return factory.getObject();
}
@Bean
public ResourcelessTransactionManager transactionManager() {
return new ResourcelessTransactionManager();
}
}
我的导入“@ImportResource”生成错误,因为我的 java 代码中有一个数据源,而我的 xml 文件中有一个数据源:
没有定义 [javax.sql.DataSource] 类型的限定 bean:预期单个匹配 bean,但找到 2:
我只想在H2数据源中生成spring批处理表,并在oracle数据源(xml导入资源)中运行批处理器。
你能帮帮我吗? 谢谢你:)
【问题讨论】:
-
stackoverflow.com/a/9171789/6572971 可能会对您有所帮助。
-
谢谢。 :) 但是如何只为 springbatch 定义这个数据源,因为我有一个错误:没有定义类型 [javax.sql.DataSource] 的限定 bean:预期的单个匹配 bean 但找到了 2:
-
你用的是哪个版本的spring batch?
-
我使用 spring-boot-starter-batch 1.4.0.RELEASE(包括 spring-batch-core 3.0.7.RELEASE)
-
好的,谢谢。 @mhshimul 的答案是正确的。这也可能有所帮助:stackoverflow.com/a/26531914/5019386.
标签: java spring-boot spring-batch h2