【问题标题】:spring-boot-batch with mongodb带有 mongodb 的 spring-boot-batch
【发布时间】:2020-07-08 06:12:20
【问题描述】:

这是我在这个论坛上的第一篇文章,所以如果犯了错误,请对我轻描淡写。我正在使用带有 mongdb 的 spring-boot 批处理,一切正常,但是当我必须测试我的批处理时遇到了麻烦。我的 Batchconfiguration 基于多个作业(4 个作业),所以

  1. 第一个麻烦 当我使用 JobLauncherTestUtils 时,spring 不知道要注入哪个作业,也不知道如何指定它来逐个测试作业。
  2. 第二个麻烦当我将配置分离为仅测试一项作业时,无法创建 JobLauncherTestUtils,因为它需要 dataSource,因为我使用 MongoDb 和 mongotemplate 我不使用 dataSource。

堆栈错误看起来像:

原因:org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“jobRepositoryTestUtils”的bean时出错:通过方法“setDataSource”参数0表示的依赖关系不满足;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“javax.sql.DataSource”类型的合格 bean 可用:预计至少有 1 个有资格作为自动装配候选者的 bean。依赖注释:{}

希望有人能帮助我找到解决方案。提前致谢。

【问题讨论】:

    标签: mongodb spring-batch


    【解决方案1】:

    当我使用 JobLauncherTestUtils 时遇到的第一个问题,spring 不知道要注入哪个作业,我也不知道如何指定它来逐个测试作业。

    您可以使用JobLauncherTestUtils#setJob 指定要启动的作业。请看JobLauncherTestUtils throws NoUniqueBeanDefinitionException while trying to test spring batch steps

    当我将配置分离为仅测试一项作业时,第二个问题是 JobLauncherTestUtils 无法创建,因为它需要数据源,因为我使用 MongoDb 和 mongotemplate 我不使用数据源。

    根据错误Error creating bean with name 'jobRepositoryTestUtils',无法创建的不是JobLauncherTestUtils而是jobRepositoryTestUtils。存储库测试实用程序是一个方便的类,用于从数据库中创建和删除作业执行(参见其javadoc)。所以它需要一个数据源。如果您的测试上下文中没有数据源,则需要删除此 bean 声明。

    【讨论】:

    • 感谢您的回复,此链接帮助我解决了我的问题。
    猜你喜欢
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 2017-02-16
    • 2017-04-20
    • 2017-09-27
    • 2016-10-10
    • 2018-05-14
    相关资源
    最近更新 更多