Spring Boot - 运行器



Application Runner 和 Command Line Runner 接口允许您在 Spring Boot 应用程序启动后执行代码。您可以使用这些接口在应用程序启动后立即执行任何操作。本章详细介绍了它们。

Application Runner

Application Runner 是一个用于在 Spring Boot 应用程序启动后执行代码的接口。下面的示例显示了如何在主类文件上实现 Application Runner 接口。

DemoApplication.java

package com.tutorialspoint.demo;

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

@SpringBootApplication
public class DemoApplication implements ApplicationRunner {
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
   @Override
   public void run(ApplicationArguments arg0) throws Exception {
      System.out.println("Hello World from Application Runner");
   }
}

控制台输出

现在,如果您观察下面的控制台窗口输出Hello World from Application Runner,则 println 语句在 Tomcat 启动后执行。

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/

[32m :: Spring Boot :: [39m              [2m (v3.3.3)[0;39m

[2m2024-09-04T12:05:41.902+05:30[0;39m [32m INFO[0;39m [35m12304[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mc.tutorialspoint.demo.DemoApplication   [0;39m [2m:[0;39m Starting DemoApplication using Java 21.0.3 with PID 12304 (E:\Dev\demo\target\classes started by Tutorialspoint in E:\Dev\demo)
[2m2024-09-04T12:05:41.905+05:30[0;39m [32m INFO[0;39m [35m12304[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mc.tutorialspoint.demo.DemoApplication   [0;39m [2m:[0;39m No active profile set, falling back to 1 default profile: "default"
[2m2024-09-04T12:05:43.427+05:30[0;39m [32m INFO[0;39m [35m12304[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mo.s.b.w.embedded.tomcat.TomcatWebServer [0;39m [2m:[0;39m Tomcat initialized with port 8080 (http)
[2m2024-09-04T12:05:43.454+05:30[0;39m [32m INFO[0;39m [35m12304[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mo.apache.catalina.core.StandardService  [0;39m [2m:[0;39m Starting service [Tomcat]
[2m2024-09-04T12:05:43.454+05:30[0;39m [32m INFO[0;39m [35m12304[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mo.apache.catalina.core.StandardEngine   [0;39m [2m:[0;39m Starting Servlet engine: [Apache Tomcat/10.1.28]
[2m2024-09-04T12:05:43.528+05:30[0;39m [32m INFO[0;39m [35m12304[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mo.a.c.c.C.[Tomcat].[localhost].[/]      [0;39m [2m:[0;39m Initializing Spring embedded WebApplicationContext
[2m2024-09-04T12:05:43.529+05:30[0;39m [32m INFO[0;39m [35m12304[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mw.s.c.ServletWebServerApplicationContext[0;39m [2m:[0;39m Root WebApplicationContext: initialization completed in 1552 ms
[2m2024-09-04T12:05:44.120+05:30[0;39m [32m INFO[0;39m [35m12304[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mo.s.b.w.embedded.tomcat.TomcatWebServer [0;39m [2m:[0;39m Tomcat started on port 8080 (http) with context path '/'
[2m2024-09-04T12:05:44.134+05:30[0;39m [32m INFO[0;39m [35m12304[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mc.tutorialspoint.demo.DemoApplication   [0;39m [2m:[0;39m Started DemoApplication in 3.007 seconds (process running for 4.519)
Hello World from Application Runner

Command Line Runner

Command Line Runner 是一个接口。它用于在 Spring Boot 应用程序启动后执行代码。下面的示例显示了如何在主类文件上实现 Command Line Runner 接口。

DemoApplication.java

package com.tutorialspoint.demo;

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

@SpringBootApplication
public class DemoApplication implements CommandLineRunner {
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
   @Override
   public void run(String... arg0) throws Exception {
      System.out.println("Hello world from Command Line Runner");
   }
}

控制台输出

查看下面的控制台窗口输出“Hello world from Command Line Runner” println 语句在 Tomcat 启动后执行。

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/

[32m :: Spring Boot :: [39m              [2m (v3.3.3)[0;39m

[2m2024-09-04T12:08:37.804+05:30[0;39m [32m INFO[0;39m [35m16908[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mc.tutorialspoint.demo.DemoApplication   [0;39m [2m:[0;39m Starting DemoApplication using Java 21.0.3 with PID 16908 (E:\Dev\demo\target\classes started by Tutorialspoint in E:\Dev\demo)
[2m2024-09-04T12:08:37.808+05:30[0;39m [32m INFO[0;39m [35m16908[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mc.tutorialspoint.demo.DemoApplication   [0;39m [2m:[0;39m No active profile set, falling back to 1 default profile: "default"
[2m2024-09-04T12:08:38.772+05:30[0;39m [32m INFO[0;39m [35m16908[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mo.s.b.w.embedded.tomcat.TomcatWebServer [0;39m [2m:[0;39m Tomcat initialized with port 8080 (http)
[2m2024-09-04T12:08:38.786+05:30[0;39m [32m INFO[0;39m [35m16908[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mo.apache.catalina.core.StandardService  [0;39m [2m:[0;39m Starting service [Tomcat]
[2m2024-09-04T12:08:38.786+05:30[0;39m [32m INFO[0;39m [35m16908[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mo.apache.catalina.core.StandardEngine   [0;39m [2m:[0;39m Starting Servlet engine: [Apache Tomcat/10.1.28]
[2m2024-09-04T12:08:38.841+05:30[0;39m [32m INFO[0;39m [35m16908[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mo.a.c.c.C.[Tomcat].[localhost].[/]      [0;39m [2m:[0;39m Initializing Spring embedded WebApplicationContext
[2m2024-09-04T12:08:38.842+05:30[0;39m [32m INFO[0;39m [35m16908[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mw.s.c.ServletWebServerApplicationContext[0;39m [2m:[0;39m Root WebApplicationContext: initialization completed in 980 ms
[2m2024-09-04T12:08:39.185+05:30[0;39m [32m INFO[0;39m [35m16908[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mo.s.b.w.embedded.tomcat.TomcatWebServer [0;39m [2m:[0;39m Tomcat started on port 8080 (http) with context path '/'
[2m2024-09-04T12:08:39.192+05:30[0;39m [32m INFO[0;39m [35m16908[0;39m [2m---[0;39m [2m[demo] [           main][0;39m [2m[0;39m[36mc.tutorialspoint.demo.DemoApplication   [0;39m [2m:[0;39m Started DemoApplication in 1.844 seconds (process running for 2.693)
Hello world from Command Line Runner

广告

© . All rights reserved.