CommandLineRunner和ApplicationRunner的作用

如果想要在SpringApplication启动后做一些事情,我们可以实现CommandLineRunner或者ApplicationRunner接口。这2个接口都提供了一个run方法,这个run方法会在SpringApplication.run(…)完成之前被调用。

另外,需要注意的是,我们可以同时使用多个实现了上述2个(任一)接口的bean,此时必须为这些bean指定顺序:

  • 让你的bean在实现上述2个(任一)接口的同时实现org.springframework.core.Ordered接口
  • 在你的bean上加上@Order注解

二者的功能和官方文档一模一样,都是在Spring容器初始化完毕之后执行起run方法。不同点在于,前者的run方法参数是String...args,直接传入字符串;后者的参数是ApplicationArguments,对参数进行了封装。

ApplicationArguments区分选项参数和非选项参数。选项参数是我们可以通过Spring Boot属性处理使用的(如 app.name = Myapp)。它们还可以通过传入逗号分隔列表或多次使用参数来为每个选项包含多个值。非选项参数是我们在命令行传递除了VM参数的所有其他参数。

非选项参数通过getNonOptionArgs()作为字符串列表重新获得。

而对于选项参数,我们可以通过接收选项名称 getOptionNames实际值通过 getOptionValues,它会返回一个列表字符串。

containsOption(String name):判断从参数中解析的 option 参数是否包含指定名称的选项
getNonOptionArgs():获取args中的所有 non option 参数
getOptionNames():获取args中所有的 option参数的name
getSourceArgs():获取传递给应用程序的原始未处理参数
getOptionValues(String name):获取args中指定name的option参数的值

 

posted @ 2020-02-29 16:47  codedot  阅读(1001)  评论(0编辑  收藏  举报