gpt4 book ai didi

spring-boot - 定义内存中的 JobRepository

转载 作者:行者123 更新时间:2023-12-02 11:26:17 24 4
gpt4 key购买 nike

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

最佳答案

这里有几件事:

  • 如果您有 DataSource在您的 ApplicationContext 中配置,默认情况下 Spring Batch 会尝试使用它。
  • 为了不使用 DataSource当在 ApplicationContext 中可用时,您需要创建自己的 BatchConfigurer .您可以通过扩展 DefaultBatchConfigurer 来做到这一点。 .
  • 不要使用 MapJobRepository除非仅用于测试目的。我有很多问题(线程安全等),不建议用于生产。改用像 HSQLDB 这样的内存数据库(您仍然需要创建自己的 BatchConfigurer 来这样做)。
  • 关于spring-boot - 定义内存中的 JobRepository,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44238232/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com