在使用弹簧引导构建应用启动时,我们在工作中都是通过命令行来启动应用,有时候会需要一些特定的参数以在应用启动时,做一些初始化的操作。
弹簧引导提供了CommandLineRunner和ApplicationRunner这两个接口供用户使用。
<强> 1。CommandLineRunner 强>
1.1声明:
@FunctionalInterface 公共接口CommandLineRunner {/* * *回调用于运行bean。 * @param args参数传入的主要方法 * @throws异常> 包com.example.consoleapplication; 进口org.springframework.boot.CommandLineRunner; 进口org.springframework.stereotype.Component; @ component 公共类TestRunner实现CommandLineRunner { @Override 公共空间运行(字符串…args) {//做某事… (字符串参数:args) { System.out.println (arg); } system . out。打印(“测试命令杀手”); } } >之前1.3运行结果
运行:<代码> java jar构建/libs/consoleapplication-0.0.1-SNAPSHOT。jar -sdfsaf sdfas, 代码>
结果如下:
2019-03-16 17:31:56.544 信息18679 - - - - - - (,,,,,,,,,主要]c.e.consoleapplication.DemoApplication ,,:不活跃的概要集,回落默认概要文件:默认
引用>
2019-03-16 17:31:57.195 信息18679 - - - - - - (,,,,,,,,,主要]c.e.consoleapplication.DemoApplication ,,:开始DemoApplication 16.172秒(16.65 JVM运行)
-sdfsaf
sdfas
测试命令运动员%
<强> 2。ApplicationRunner 强>
2.1声明
/* * *接口用来表明一个bean应该& lt; em> run当它是包含在 *一个{@link SpringApplication}。可以定义多个{@link ApplicationRunner} bean *在同一个应用程序上下文,可以下令使用{@link下令} *接口或{@link秩序@Order}注释。 * * @author菲利普·韦伯 * 1.3.0 @since版本 * @see CommandLineRunner */ @FunctionalInterface 公共接口ApplicationRunner {/* * *回调用于运行bean。 * @param args参数传入应用程序 * @throws异常> 包com.example.consoleapplication; 进口org.springframework.boot.ApplicationRunner; 进口org.springframework.stereotype.Component; 进口org.springframework.boot.ApplicationArguments; @ component 公共类TestApplicationRunner实现ApplicationRunner { @Override 公共空间运行(ApplicationArguments args){抛出异常//做某事… system . out。println(选项参数名称+ args.getOptionNames ()); system . out。println(“不选择”+ + args.getNonOptionArgs ()); } } >之前2.3运行结果
运行命令<代码> java jar构建/libs/consoleapplication-0.0.1-SNAPSHOT。jar -non1 non2——选项=1> 代码,结果为:
2019-03-16 18:08:08.528 信息19778 - - - - - - (,,,,,,,,,主要]c.e.consoleapplication.DemoApplication ,,:不活跃的概要集,回落默认概要文件:默认
引用>
2019-03-16 18:08:09.166 信息19778 - - - - - - (,,,,,,,,,主要]c.e.consoleapplication.DemoApplication ,,:开始DemoApplication 16.059秒(16.56 JVM运行)
测试
选择参数名称[选项]
非选项+ [-non1 non2] -non1
non2
——选项=1
测试%
可以看的到,可选参数名有选项,不选参数有-non1和non2
<强> 3。小结强>
CommandLineRunner和ApplicationRunner都能实现命令行应用启动时根据参数获取我们需要的值,做特殊的逻辑。但两者有所不同,推荐使用ApplicationRunner的可选参数,方便扩展。
<强> 4。参考文档强>
https://docs.spring.io/spring-boot/docs/2.0.5.RELEASE/reference/htmlsingle/boot-features-web-environment
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
弹簧引导命令行启动的方式