如果在Application運行之前需要執(zhí)行一些代碼,可以通過實現(xiàn)ApplicationRunner或者CommandLineRunner接口。接口只有一個run方法彼硫,會在SpringApplication.run(...)方法執(zhí)行之前運行呛谜。其中ApplicationRunner可以訪問ApplicationArguments參數(shù)信息;而CommandLineRunner可以訪問原始的String[]參數(shù)寒匙。
如果實現(xiàn)接口的類有多個零如,還可以通過實現(xiàn)org.springframework.core.Ordered接口或則使用@Order(value=int_value)來控制執(zhí)行順序躏将,int值越小優(yōu)先級越高,默認值為Ordered.LOWEST_PRECEDENCE(2147483647)考蕾。
1祸憋,實現(xiàn)ApplicationRunner接口,并實現(xiàn)Ordered接口執(zhí)行順序
@Component
public class MyRunnerImplAppRunner implements ApplicationRunner,Ordered{
@Override
public void run(ApplicationArguments args) throws Exception {
// TODO Auto-generated method stub
System.out.println(this.getClass().getName()+" runs before application running");
System.out.println("args ares "+args.getSourceArgs().toString());
}
@Override
public int getOrder() {
// TODO Auto-generated method stub
return 1;
}
}
2肖卧,實現(xiàn)CommandLineRunner接口蚯窥,使用@Order注解指定運行順序
@Component
@Order(value=4)
public class MyRunnerImplCmdRunner implements CommandLineRunner{
@Override
public void run(String... args) throws Exception {
System.out.println(this.getClass().getName()+" running before application running");
System.out.println("args are "+args.toString());
}
}
運行結(jié)果: