SpringBoot系列(二)-ApplicationRunner和CommandLineRunner

338 阅读1分钟

如果启动后需要运行一些特定的代码SpringApplication,则可以实现ApplicationRunner或CommandLineRunner接口。这两个接口以相同的方式工作,并提供一个单一的run方法,该方法在SpringApplication.run(…​)完成之前就被调用。

@Component
public class AppRun implements ApplicationRunner {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("HiaHiaApp");
    }
}
@Component
public class CmdRun implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("HiaHiaCMD");
    }
}

如果需要手动控制Runner启动的顺序,可以试先org.springframework.core.Ordered接口

@Component
public class CmdRun implements CommandLineRunner, Ordered {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("HiaHiaCMD");
    }

    @Override
    public int getOrder() {
        return 0;
    }
}


@Component
public class AppRun implements ApplicationRunner, Ordered {
    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("HiaHiaApp");
    }

    @Override
    public int getOrder() {
        return 1;
    }
}

Runner的run()只会在程序启动后,SpringApplication.run(SpringlearningApplication.class, args);运行完之前,执行一次。