繁体   English   中英

命令行 arguments 在 Spring 引导外部主要问题

[英]Command Line arguments in Spring boot outside main problem

我正在尝试在 spring 引导应用程序的主要方法之外获取命令行 arguments,我尝试了很多方法,但没有一个有效。 我正在使用 spring 启动 2.4.5。 以下是我的代码:

package com.example;

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MainClass implements ApplicationRunner {
    public static void main(String[] args){
        SpringApplication.run(MainClass.class);
        for (String arg : args) System.out.println("MAIN::::"+arg);
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        System.out.println("# NonOptionArgs: " + args.getNonOptionArgs().size());

        System.out.println("NonOptionArgs:");
        args.getNonOptionArgs().forEach(System.out::println);

        System.out.println("# OptionArgs: " + args.getOptionNames().size());
        System.out.println("OptionArgs:");

        args.getOptionNames().forEach(optionName -> {
            System.out.println(optionName + "=" + args.getOptionValues(optionName));
        });
    }
}

这是用于传递参数的 output: iamnonoption --app.name=CmdRulez --app.hosts=abc,def,ghi --app.name=2

# NonOptionArgs: 0
NonOptionArgs:
# OptionArgs: 0
OptionArgs:
MAIN::::iamnonoption
MAIN::::--app.name=CmdRulez
MAIN::::--app.hosts=abc,def,ghi
MAIN::::--app.name=2

为什么 ApplicationArguments 没有得到任何 arguments?

改变

SpringApplication.run(MainClass.class);

至:

SpringApplication.run(MainClass.class, args);

参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM