Chr*_*riX 3 spring-batch spring-boot
我正在使用Spring启动测试Spring Batch.我需要定义在Oracle数据库上工作的作业,但我不想在此数据库中保存作业和步骤状态.我在文档中读到了我可以使用MapJobRepositoryFactoryBean的内存存储库.
然后,我实现了这个bean:
@Bean
public JobRepository jobRepository() {
MapJobRepositoryFactoryBean factoryBean = new MapJobRepositoryFactoryBean(new ResourcelessTransactionManager());
try {
JobRepository jobRepository = factoryBean.getObject();
return jobRepository;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我的工作开始时,Spring Batch的第一件事就是在Oracle DB中创建表并继续使用Oracle数据源.这就像我的JobRepository定义没有被考虑在内.
我错过了什么 ?
编辑:我正在使用Spring Boot 1.5.3和Spring Batch 3.0.7
使用 SpringBoot 2.x,解决方案更简单。
你必须DefaultBatchConfigurer像这样扩展这个类:
@Component
public class NoPersistenceBatchConfigurer extends DefaultBatchConfigurer {
@Override
public void setDataSource(DataSource dataSource) {
}
}
Run Code Online (Sandbox Code Playgroud)
如果没有数据源,框架会自动切换到使用MapJobRepository.
这里有几件事:
DataSource配置了ApplicationContext,默认情况下Spring Batch会尝试使用它.DataSource何时可用ApplicationContext,您需要创建自己的BatchConfigurer.你可以通过扩展DefaultBatchConfigurer.MapJobRepository仅用于测试目的.我有许多问题(线程安全等),不建议用于生产.使用内存数据库(如HSQLDB)(您仍然需要创建自己的数据库BatchConfigurer).| 归档时间: |
|
| 查看次数: |
7882 次 |
| 最近记录: |