我是靠谱客的博主 迷人鸭子,最近开发中收集的这篇文章主要介绍SpringBootRunner简单实践,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本文演示了SpringBoot基于CommandLineRunner及ApplicationRunner的启动参数读取模式

CommandLineRunner

CommandLineRunner与ApplicationRunner的区别只是run方法的参数差异,这两个runner都主要用户类似开机启动的场景,也就是在服务启动完成,所有bean初始化完毕后,回调runner接口的run方法,完成资源初始化等操作,例如redis中缓存初始化等。

下面是个cmdrunner示例:

@Component
@Order(1)
@Slf4j
public class CmdRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
log.info("在全部bean初始化完成后调用");
log.info("可通过CommandLineRunner实现类来进行资源初始化等操作");
//打印 program args
for (String arg : args) {
log.info(arg);
}
// 打印vm options
log.info(System.getProperty("vmarg"));
}
}

ApplicationRunner

applicationrunner可以更结构化的读取参数,而不需要自行基于string值进行解析:

@Component
@Order(2)
@Slf4j
public class AppRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) throws Exception {
log.info("基于Order第二优先级启动");
log.info("与CommandLineRunner区别是获取参数的方式不一样,也就是run方法的参数不一样");
//获取并打印option args,例如 --parg=p1
args.getOptionNames().forEach(name -> {
log.info("{}:{}", name, args.getOptionValues(name));
});
log.info("NonOptionArgs:{}", args.getNonOptionArgs());
}
}

同时,有多个runner时,可通过@Order注解来制定启动顺序。

启动参数运行验证

如果功能idea,可以在 edit configurations中,分别配置vm optinos 和 program arguments,具体如下:

vm options:-Dvmarg=v1
program arguments:--parg=p1 --parg=p2 p3

同样,也可以在命令行执行并传递启动参数,具体如下:

java -jar hiboot-1.0-SNAPSHOT.jar -Dvmarg=v1 --parg=p1 --parg=p2 p3

运行后,控制台输入内容如下

Started RunnerApplication in 1.432 seconds (JVM running for 2.097)
在全部bean初始化完成后调用
可通过CommandLineRunner实现类来进行资源初始化等操作
--parg=p1
--parg=p2
p3
v1
基于Order第二优先级启动
与CommandLineRunner区别是获取参数的方式不一样,也就是run方法的参数不一样
parg:[p1, p2]
NonOptionArgs:[p3]
SourceArgs:--parg=p1

最后

以上就是迷人鸭子为你收集整理的SpringBootRunner简单实践的全部内容,希望文章能够帮你解决SpringBootRunner简单实践所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部