怎么获取启动类ApplicationArguments的值

前言:

我们在开发当中需要从启动类里面获取到自己在业务当中需要使用的参数,具体怎么获取看实际业务,接下来介绍一下获取相关。

1、设置启动参数

在idea的这个位置可以设置便于我们测试查看数据。

我的设置是这个。

--Mygroup=a,b --testpath=d:/data/1.txt -testargs=2 testNoArg TestNoarg2=3 

 2、获取ApplicationArguments数据

@Component
@Slf4j
public class ArgsBean {

    //ApplicationArguments里面 --xxx=test 是--key=value格式
    //@Value("${xxx}")可以将value取出来
    @Value("${testpath}")
    private String testpath;
//    @Value("${TestNoarg2}")
//    private String TestNoarg2;

    @Resource
    private ApplicationArguments arguments;

    @PostConstruct
    public void run() {
        //查看--key=value格式格式是否可以正确取值
        log.info("++++++++++++++++++++{}",testpath);
//        log.info("--------------------{}",TestNoarg2);

        // 判断从参数中解析的 option 参数是否包含指定名称的选项
        boolean debug = arguments.containsOption("testargs");
        log.warn("containsOption debug is:{}", debug);
        // 获取args中的所有 non option 参数 获得不是 -- 开头的参数
        List<String> nonOptionArgs = arguments.getNonOptionArgs();
        log.warn("getNonOptionArgs :{}", nonOptionArgs);
        log.warn("非选项参数数量:{}",arguments.getNonOptionArgs().size());

        // 获取args中所有的 option参数的name,即取得 -- 开头的参数的key
        Set<String> optionNames = arguments.getOptionNames();
        log.warn("getOptionNames:{}", optionNames);
        log.warn("选项参数数量{}",arguments.getOptionNames().size());
        for (String optionName : optionNames) {
            List<String> optionValues = arguments.getOptionValues(optionName);
            log.warn("{}对应的getOptionValues:{}",optionName, optionValues);
        }
        // 获取传递给应用程序的原始未处理参数,所有的参数
        String[] sourceArgs = arguments.getSourceArgs();
        for (String sourceArg : sourceArgs) {
            log.warn("这是传过来sourceArgs[{}]", sourceArg);
        }

    }

}

 这个是ApplicationArguments里面的相关数据,具体细节下面讲解。

2.1自定义参数

利用@Value("${xxx}")这个注解,可以获取到启动类自己定义的参数,赋值的时候是

--key = value 的格式,所以取值的时候用@Value("${xxx}")即可。

但是注意,像上文在idea设置的启动参数

 这个截图的参数就不能获取,如果利用@Value("${xxx}")注解获取值会报错!

下面这个例子是“--testpath”格式,所以可以获取

 2.2 所有参数

我们可以做如:

判断从参数中解析的 option 参数是否包含指定名称的选项;
获取args中的所有 non option 参数 获得不是 -- 开头的参数
获取args中所有的 option参数的name,即取得 -- 开头的参数的key
获取传递给应用程序的原始未处理参数,所有的参数

3、调用

 在启动类调用刚才写的测试方法就行。

4、测试数据

 

以上,就是启动类获取ApplicationArguments里面的数据,然后根据具体业务去找对应的方法!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一枝风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值