1,介绍

CommandLineRunner、ApplicationRunner 接口是在容器启动成功后的最后一步回调(类似开机自启动)。

一个项目可以有多个,优先级用@Order注解指定或者实现Ordered接口。

ApplicationRunner是对CommandLineRunner原始参数的进一步封装。

2,执行测试以及作用展示

可以获取启动参数中的指令

2.1 ApplicationRunner

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import java.util.Arrays;

/**
 * 实现ApplicationRunner
 *
 * @Author: Mr_li
 * @CreateDate: 2019-04-21 13:37
 * @Version: 1.0
 */
@Component
public class TestApplicationRunner implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) {
        System.out.println("===MyApplicationRunner===" + Arrays.asList(args.getSourceArgs()));
        System.out.println("===getOptionNames========" + args.getOptionNames());
        System.out.println("===name=======" + args.getOptionValues("name"));
        System.out.println("==age========" + args.getOptionValues("age"));
    }
}

2.2 CommandLineRunner

import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

import java.util.Arrays;

/**
 * 测试CommandLineRunner
 *
 * @Author: Mr_li
 * @CreateDate: 2019-04-21 13:24
 * @Version: 1.0
 */
@Order(1)
@Component
public class TestCommandLineRunner implements CommandLineRunner {
    @Override
    public void run(String... args) {
        System.out.println("===CommandLineRunner===" + Arrays.asList(args));
    }
}

2.3 启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.util.Arrays;

/**
 * @author Mr_Li
 */
@SpringBootApplication
public class JwtApplication {
    public static void main(String[] args) {
        System.out.println("启动类" + Arrays.asList(args));
        SpringApplication.run(JwtApplication.class, args);
    }
}

2.4 设置启动参数

Spring boot  的 CommandLineRunner和ApplicationRunner接口_spring

2.5 执行获取结果

Spring boot  的 CommandLineRunner和ApplicationRunner接口_spring_02

3 总结

这两个启动接口中,我们可以实现根据启动的参数指令,初始化一些东西,比如redis的初始化等等。