如何使用多个CommandLineRunner运行Spring Boot App

时间:2017-01-11 19:47:18

标签: java multithreading spring-boot command-line-interface

我正在尝试使用多个CommandLineRunner实现运行Spring Boot应用程序,希望所有运行方法都能启动。

但它只是其中之一,无论如何都创建了两个实现。

首先:

@Component
public class TestRunnerA implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        logger.info("starting: TestRunnerA");
        consume();
    }
}

第二

   @Component
   public class TestRunnerB implements CommandLineRunner {

        @Override
        public void run(String... args) throws Exception {
            logger.info("starting: TestRunnerB");
            consume();
        }
    }

在这种情况下,只调用Run() TestRunnerA方法。

有人知道为什么吗?

我尝试添加@Order注释,但仍然......(调用顺序中的第一个)

亲切的问候, 克努特

2 个答案:

答案 0 :(得分:0)

您可以使用不同的弹簧配置文件注释不同的跑步者,并使用以下命令在启动脚本中指定所需的配置文件:

hr

答案 1 :(得分:0)

您可以制作一个实现SpringBootApplication的单个CommandLineRunner,然后将所有其他运行程序作为@Component注入,并使用第一个参数来委托哪个命令应采用其余参数。这是我在此处回答的一个示例:https://stackoverflow.com/a/58777948/986160

重要:请小心,尽管如果将其放入crontab中,则一次调用会破坏前一个调用,否则它将被销毁。