第一种系统启动任务
/**
* 系统启动类,当项目启动的时候,这里run会自动执行,如果不用这个,也可以利用servletContextListstener来实现类似的功能
*
* @Order 如果项目中存在多个commandLineRunner,会有优先级
* @Order 注解来指定优先级
* 数字越大,优先级越小
*/
@Component
@Order(Ordered.LOWEST_PRECEDENCE)
public class MyCommandLineRunner implements CommandLineRunner {
/**
* 系统启动时,该方法触发
* 这个方法的参数其实是main方法的参数
* @param args
* @throws Exception
*/
@Override
public void run(String... args) throws Exception {
System.out.println("Arrays.toString(args)="+Arrays.toString(args));
}
}
第二种 系统启动任务
implements ApplicationRunner | 第二种系统启动任务 |
getNonOptionArgs | 获取无key的参数,其实就是commendLineRunner的参数 |
getOptionNames | 获取所有key-value参数的key |
getSourceArgs | 获取所有参数,有key和无key的参数 |
@Component @Order(1) public class MyApplicationRunner implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { //获取无key的参数,其实就是commendLineRunner的参数 List<String> nonOptionArgs = args.getNonOptionArgs(); System.out.println("nonOptionArgs="+nonOptionArgs); //获取所有key-value参数的key Set<String> optionNames = args.getOptionNames(); for (String optionName : optionNames) { System.out.println(optionName+"--------->"+args.getOptionValues(optionName)); } //获取所有参数,有key和无key的参数 String[] sourceArgs = args.getSourceArgs(); System.out.println("获取所有的参数,有key和无key的="+ Arrays.toString(sourceArgs)); }