gpt4 book ai didi

spring-boot - 在 Spring Boot 应用程序中启动 Spring Batch Job 问题

转载 作者:行者123 更新时间:2023-12-04 02:48:27 25 4
gpt4 key购买 nike

我在 Spring Boot 应用程序中定义了多个 Spring Batch 作业。例如,工作 1、工作 2。等等

当我为其中一项工作编写了 junit 测试时。 问题是当我查看测试输出日志时,我发现它试图启动该项目中定义的所有作业。

我在项目中使用的是最新的稳定版 Spring Boot 1.2.5、Spring Batch 3.0.4。

junit test 的片段代码如下。

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@TransactionConfiguration
@SpringApplicationConfiguration(classes = BatchApplication.class)
public class SubmitJobTest {

@Inject Job job1;

@Test
public void testLockJob() {

logger.debug("lockId is @" + task.getLockId());

JobParametersBuilder builder = new JobParametersBuilder()
.addString("lockId", lockId.toString());
try {
JobExecution jobExecution = jobLauncher.run(this.job1, builder.toJobParameters());
assertEquals(BatchStatus.COMPLETED, jobExecution.getStatus());

} catch (JobExecutionAlreadyRunningException | JobRestartException | JobInstanceAlreadyCompleteException | JobParametersInvalidException ex) {
ex.printStackTrace();
}

}

我定义的一些作业需要一个 JobParamters 才能运行,所以当我运行这个测试时,其他 Jobs 启动并执行,然后由于缺少特定的 JobParamters 而引发异常。

我已尝试添加 @Named到 Job 并以唯一的名称注入(inject)它,但得到了相同的结果。

我自己解决了这个问题。 添加后 spring.batch.job.enabled=false进入 application.yml , 有用。
  • 默认情况下不启 Action 业。
  • 运行测试时,它按我的预期工作,只启动了一项工作。
  • 最佳答案

    你不能那样做。几周前我问了同样的问题:
    Using @SpringApplicationConfiguration: How to set jobparameters in tests when using spring-batch and spring-boot

    您必须直接使用 JobLauncherCommandLineRunner:

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = {MyBatchRootConfiguration.class})
    @IntegrationTest({"aProp=aValue"})
    public class MyBatchTestClass {

    @Autowired
    private JobLauncherCommandLineRunner runner;

    @Test
    public void launchTest() {
    String[] myArgs = new String[]{"jobParam1=value1"};
    runner.run(myArgs);
    }
    }

    关于spring-boot - 在 Spring Boot 应用程序中启动 Spring Batch Job 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31943442/

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