我们何时以及为什么需要 ApplicationRunner 和 Runner 接口?

use*_*980 16 java spring spring-boot

我正在学习 Spring Boot。ApplicationRunner 或任何运行器接口的典型用例是什么?

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
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Dea*_*ool 25

这些运行器用于在应用程序启动时运行逻辑,例如 spring boot 具有ApplicationRunner(功能接口)和run方法

ApplicationRunner run() 将在创建 applicationcontext 之后和 spring boot 应用程序启动之前执行。

ApplicationRunner 采用 ApplicationArgument ,它具有方便的方法,如 getOptionNames()、getOptionValues() 和 getSourceArgs()。

CommandLineRunner也是一个带有run方法的函数式接口

CommandLineRunner run() 将在创建 applicationcontext 之后和 spring boot 应用程序启动之前执行。

它接受在服务器启动时传递的参数。

两者提供相同的功能和之间的唯一区别CommandLineRunnerApplicationRunnerCommandLineRunner.run()接受String array[]ApplicationRunner.run()接受ApplicationArguments作为参数。您可以在此处通过示例找到更多信息