我正在尝试使用多个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
注释,但仍然......(调用顺序中的第一个)
亲切的问候, 克努特
答案 0 :(得分:0)
您可以使用不同的弹簧配置文件注释不同的跑步者,并使用以下命令在启动脚本中指定所需的配置文件:
hr
答案 1 :(得分:0)
您可以制作一个实现SpringBootApplication
的单个CommandLineRunner
,然后将所有其他运行程序作为@Component
注入,并使用第一个参数来委托哪个命令应采用其余参数。这是我在此处回答的一个示例:https://stackoverflow.com/a/58777948/986160
重要:请小心,尽管如果将其放入crontab中,则一次调用会破坏前一个调用,否则它将被销毁。