只是添加,我找到了另一种方法,不提供在交互模式下运行的选项,但使用上面的配置文件,您当然可以交换配置.请注意我正在使用lombok和jool(以防万一有人复制粘贴并获得有趣的问题!)
条目
@SpringBootApplication
public class Righter {
public static void main(String[] args) {
SpringApplication.run(Righter.class, args);
}
@Bean
public ApplicationRunner shellRunner(Shell shell) {
return new NonInteractiveShellRunner(shell);
}
申请人:
@Order(0)
public class NonInteractiveShellRunner implements ApplicationRunner{
private final Shell shell;
public NonInteractiveShellRunner(Shell shell) {
this.shell = shell;
}
@Override
public void run(ApplicationArguments args) throws Exception {
shell.run(new CommandInputProvider(args.getSourceArgs()));
}
public static class PredefinedInputProvider implements InputProvider{
private final Input input;
private boolean commandExecuted = false;
public PredefinedInputProvider(String[] args) {
this.input = new PredefinedInput(args);
}
@Override
public Input readInput() {
if (!commandExecuted){
commandExecuted=true;
return input;
}
return new PredefinedInput(new String[]{"exit"});
}
@AllArgsConstructor
private static class PredefinedInput implements Input{
private final String[] args;
@Override
public String rawText() {
return Seq.of(args).toString(" ");
}
@Override
public List words(){
return Arrays.asList(args);
}
}
}
}