ApplicationRunner 和 CommandLineRunner 功能一致,用法也基本一致,唯一的区别主要体现在对参数的处理上,ApplicationRunner 可以接收更多类型的参数(ApplicationRunner 除了可以接收 CommandLineRunner 的参数之外,还可以接收 key/value形式的参数)。
? ?
? ?
一、创建MyApplicationRunner类实现ApplicationRunner接口
? ?
? ?
二、重写run()方法并接收更多具体参数
? ?
//args.getSourceArgs();则表示获取命令行中的所有参数。
String[]sourceArgs=args.getSourceArgs();
System.out.println("sourceArgs1>>>>>>>>>>"+Arrays.toString(sourceArgs));
//args.getNonOptionArgs();可以用来获取命令行中的无key参数(和CommandLineRunner一样)。
List<String>nonOptionArgs=args.getNonOptionArgs();
System.out.println("nonOptionArgs1>>>>>>>>>>>"+nonOptionArgs);
//args.getOptionNames();可以用来获取所有key/value形式的参数的key。
Set<String>optionNames=args.getOptionNames();
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
for(StringoptionName:optionNames){
//args.getOptionValues(key));可以根据key获取key/value形式的参数的value。
System.out.println(optionName+">>>>>>>>>>"+args.getOptionValues(optionName));
}
System.out.println("\n");
System.out.println(">>>>>>>>>>>>>>>>>applicationrunner1结束>>>>>>>>>>>>>>>>>>>>>>>");
? ?
三、项目打包,命令行传参数
? ?
D:\IdeaProjects\interceptordemo\target>java -jar demo-0.0.1-SNAPSHOT.jar --name=hufei hufei www.baidu.com
? ?
demo-0.0.1-SNAPSHOT.jar 这个是项目打包的jar包
? ?
? ?
四、效果图
? ?
? ?
? ?