23.8 Using the ApplicationRunner or CommandLineRunner 实现ApplicationRunner 和CommandLineRunner

来源:互联网 发布:itools pro for mac 编辑:程序博客网 时间:2024/06/06 03:53

如果您需要在SpringApplication启动之后运行一些特定的代码,那么您可以实现ApplicationRunner或commandlinrun 接口。这两个接口都以相同的方式工作,并提供一个单独的运行方法,在springapplication.run(.)完成之前,它将被调用。

CommandLineRunner接口提供对应用程序参数的访问,作为一个简单的字符串数组,ApplicationRunner提供了ApplicationArguments。

执行顺序在SpringApplication启动之前,在大部分监听器之后。监听器可参考前面的文章。

ApplicationRunner实现

@SpringBootApplicationpublic class MyApplicationRunner {    public static void main(String[] args) {        SpringApplication application = new SpringApplication(Application.class);        application.addListeners(new ApplicationListenerStarted());        application.addListeners(new ApplicationListenerEnvironmentPrepared());        application.addListeners(new ApplicationListenerPrepared());        application.addListeners(new ApplicationListenerReadyEvent());        application.addListeners(new ApplicationListenerFailed());        application.run(args);    }}@Order(2)@Componentclass MyApplicationRunner1 implements ApplicationRunner {    @Override    public void run(ApplicationArguments applicationArguments) throws Exception {        StringBuffer sf =new StringBuffer("");        for(String str :applicationArguments.getSourceArgs()){            sf.append(str);        }        System.out.println("-------------------" + this.toString()+"----"+sf);    }}@Order(1)@Componentclass MyApplicationRunner2 implements ApplicationRunner  {    @Override    public void run(ApplicationArguments applicationArguments) throws Exception {        System.out.println("-------------------" + this.toString());    }}

CommandLineRunner实现

@SpringBootApplicationpublic class MyCommandLineRunner {    public static void main(String[] args) {        String[] aa ={"0","1"};        SpringApplication application = new SpringApplication(Application.class);        application.addListeners(new ApplicationListenerStarted());        application.addListeners(new ApplicationListenerEnvironmentPrepared());        application.addListeners(new ApplicationListenerPrepared());        application.addListeners(new ApplicationListenerReadyEvent());        application.addListeners(new ApplicationListenerFailed());        application.run(aa);    }}@Order(2)@Componentclass MyCommandLineRunner1 implements CommandLineRunner {    @Override    public void run(String... args) throws Exception {        StringBuffer sf =new StringBuffer("");        for(String str :args){            sf.append(str);        }        System.out.println("-------------------" + this.toString()+ "---"+sf);    }}@Order(1)@Componentclass MyCommandLineRunner2 implements CommandLineRunner {    @Override    public void run(String... args) throws Exception {        System.out.println("-------------------" + this.toString());    }

当有对个实现可以使用@Order进行排序执行

阅读全文
0 0
原创粉丝点击