我正在使用Spring Boot测试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; } }
但是,当我开始工作时,Spring Batch要做的第一件事就是在Oracle DB中创建表并继续使用Oracle数据源。好像没有考虑我的JobRepository定义。
我错过了什么 ?
编辑 :我正在使用Spring Boot 1.5.3和Spring Batch 3.0.7
使用SpringBoot 2.x,解决方案更加简单。
您必须DefaultBatchConfigurer像这样扩展类:
DefaultBatchConfigurer
@Component public class NoPersistenceBatchConfigurer extends DefaultBatchConfigurer { @Override public void setDataSource(DataSource dataSource) { } }
如果没有数据源,框架将自动切换为使用MapJobRepository。
MapJobRepository