Spring 中的命令行参数在主要问题之外启动
Command Line arguments in Spring boot outside main problem
我试图在 spring 引导应用程序的主要方法之外获取命令行参数,我尝试了很多方法,但其中 none 有效。我正在使用 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));
});
}
}
这是传递参数的输出: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 没有得到任何参数?
变化:
SpringApplication.run(MainClass.class);
收件人:
SpringApplication.run(MainClass.class, args);
我试图在 spring 引导应用程序的主要方法之外获取命令行参数,我尝试了很多方法,但其中 none 有效。我正在使用 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));
});
}
}
这是传递参数的输出: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 没有得到任何参数?
变化:
SpringApplication.run(MainClass.class);
收件人:
SpringApplication.run(MainClass.class, args);