如果启动后需要运行一些特定的代码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);运行完之前,执行一次。