首页 > 解决方案 > 后台工作人员的 Spring Boot 应用程序

问题描述

我已经定义了以下 Spring Boot 应用程序:

@SpringBootApplication
public class Application implements CommandLineRunner {

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(WebApplicationType.NONE).run(args);
    }

    public void run(String... args) throws Exception {
        Thread.currentThread().join();
    }
}

我还有一个工人包(即可以是实现的类Runnable)。他们应该无限期地运行。

运行它们的“春天方式”是什么?(并自动执行此操作,无需明确知道它们)

谢谢

标签: javaspringspring-bootbackgroundworkerrunnable

解决方案


并自动执行此操作,而无需明确知道它们

没有Runnable从某个地方自动运行某些 s 的机制。你需要找到一种方法来通知 Spring 这些类。

三种常见情况:

  1. 在应用程序启动期间执行一些代码:ApplicationRunnerCommandLineRunner.

您要么聚集Runnables 并将它们包装成一个[Application|CommandLine]Runner应该是 bean 的 (例如@Bean,@Component等),要么将每个Runnable单独的[Application|CommandLine]Runner.

  1. 在某个时间点执行一些代码:TaskExecutor.

你注入 aTaskExecutor并给它先前收集Runnable的 s。

  1. 重复执行一些代码:TaskScheduler.

你注入 aTaskScheduler并给它之前收集Runnable的 s,再加上一个 trigger

更多细节:任务执行和调度


推荐阅读