一尘不染

定义内存中的JobRepository

spring-boot

我正在使用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


阅读 696

收藏
2020-05-30

共1个答案

一尘不染

使用SpringBoot 2.x,解决方案更加简单。

您必须DefaultBatchConfigurer像这样扩展类:

@Component
public class NoPersistenceBatchConfigurer extends DefaultBatchConfigurer {
    @Override
    public void setDataSource(DataSource dataSource) {
    }
}

如果没有数据源,框架将自动切换为使用MapJobRepository

2020-05-30