java 什么时候以及为什么需要ApplicationRunner和Runner接口?

inb24sb2  于 2023-06-20  发布在  Java
关注(0)|答案(4)|浏览(190)

我在学春 Boot 。ApplicationRunner或任何runner接口的一些典型用例是什么?

import org.junit.jupiter.api.Test;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class PersistencedemoApplicationTests implements ApplicationRunner {

    @Test
    void contextLoads() {
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
       // load initial data in test DB
    }
}

这是我知道的一个案例。还有别的吗

hs1ihplo

hs1ihplo1#

这些运行器用于在应用程序启动时运行逻辑,例如spring Boot 具有ApplicationRunner(功能接口)和run方法。
ApplicationRunner run()将在applicationcontext创建之后和spring Boot 应用程序启动之前执行。
ApplicationRunner接受ApplicationArgument,它有方便的方法,如getOptionNames()、getOptionValues()和getSourceArgs()。
CommandLineRunner也是一个功能接口,具有run方法
CommandLineRunner run()将在applicationcontext创建之后和spring Boot 应用程序启动之前执行。
它接受在服务器启动时传递的参数。
它们都提供相同的功能,CommandLineRunnerApplicationRunner之间的唯一区别是CommandLineRunner.run()接受String array[],而ApplicationRunner.run()接受ApplicationArguments作为参数。您可以通过示例here找到更多信息

vkc1a9a2

vkc1a9a22#

或者像这样:

@Bean
ApplicationRunner appStarted() {
    return args -> {
        logger.info("Ready to go - args: {}", args.getNonOptionArgs());
    };
}
eqzww0vc

eqzww0vc3#

为了使用 ApplicationRunnerCommandLineRunner 接口,需要创建一个***Spring bean***并实现 ApplicationRunnerCommandLineRunner 接口,两者执行类似。完成后,Spring应用程序将检测到bean。
此外,您还可以创建多个 ApplicationRunnerCommandLineRunner bean,并通过实现

  • org.springframework.core.Ordered interface
  • org.springframework.core.annotation.Order annotation.
    用例:

1.您可能希望记录一些命令行参数。
1.您可以在终止此应用程序时向用户提供一些说明。
考虑:

@Component
public class MyBean implements CommandLineRunner {

    @Override
    public void run(String...args) throws Exception {
        logger.info("App started with arguments: " + Arrays.toString(args));
    }
}

ApplicationRunner的详细信息

ubby3x7f

ubby3x7f4#

ApplicationRunner和CommandLineRunner是Sping Boot 提供的两个接口,用于在应用程序完全启动之前运行任何自定义代码。
Spring-batch是一个批处理框架。这使用CommandLineRunner在应用程序启动时注册和启动批处理作业。
您还可以使用此接口将一些主数据加载到缓存中/执行运行状况检查。
用例因应用而异。

相关问题