Spring Boot 基础(六)ApplicationRunner & CommandLineRunner

1,226 阅读1分钟

ApplicationRunnerCommandLineRunner的作用是在 SpringBootApplication 环境加载完成后且正式运行前执行指定任务。

自定义三个配置类:

  • ConfigA实现ApplicationRunner接口,在run方法中添加日志打印
package com.example.demo;

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ConfigA implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("Config implements ApplicationRunner");
    }
}
  • ConfigB实现CommandLineRunner接口,在run方法中添加日志打印
package com.example.demo;

import org.springframework.boot.CommandLineRunner;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ConfigB implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        System.out.println("Config implements CommandLineRunner");
    }
}
  • ConfigC为普通的配置类,在构造函数中添加日志打印
package com.example.demo;

import org.springframework.context.annotation.Configuration;

@Configuration
public class ConfigC {
    
    public ConfigC() {
        System.out.println("Normal Config");
    }
}

启动应用,日志输出如下:

2021-12-07 17:13:16.512 INFO 9164 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication using Java 17.0.1 on DESKTOP with PID 9164 ([D:\learn\Spring\demo\target\classes]() started by ... in [d:\learn\Spring\demo]())

2021-12-07 17:13:16.514 INFO 9164 --- [ main] com.example.demo.DemoApplication : No active profile set, falling back to default profiles: default

Normal Config

2021-12-07 17:13:16.953 INFO 9164 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 0.764 seconds (JVM running for 1.184)

Config implements ApplicationRunner

Config implements CommandLineRunner

从日志中可以看出,ApplicationRunnerCommandLineRunnerrun方法在SpringBootApplication启动成功后执行。

注意:ApplicationRunnerCommandLineRunnerrun方法执行顺序可以通过@Order注解或Ordered接口控制。