Java 从终端调用Spring引导方法

Java 从终端调用Spring引导方法,java,spring-boot,command-line,method-call,mainclass,Java,Spring Boot,Command Line,Method Call,Mainclass,我正在研究如何从终端调用方法 @Component public class ApplicationAdapter implements CommandLineRunner { @Autowired private IApplicationPort iApplicationPort; @Override public void run(String... args) throws Exception { iApplicationPort.get

我正在研究如何从终端调用方法

@Component
public class ApplicationAdapter implements CommandLineRunner {

    @Autowired
    private IApplicationPort iApplicationPort;

    @Override
    public void run(String... args) throws Exception {
        iApplicationPort.getAll();
        iApplicationPort.deleteStudentById((long) 1);
    }
}
这是主课

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
        new ApplicationAdapter();
    }
}

我希望调用这两个方法:getAll;并删除长1的学生;从终点站。我该怎么做呢?

首先,您不需要实例化ApplicationAdapter。这将由Spring完成,因为@Component注释:

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
        // new ApplicationAdapter(); REMOVE
    }
}
然后,您可以使用启动应用程序时传递的参数:

@Component
public class ApplicationAdapter implements CommandLineRunner {

    @Autowired
    private IApplicationPort iApplicationPort;

    @Override
    public void run(String... args) throws Exception {
        if (args[0].equals("all")) {
            iApplicationPort.getAll();
        } else if (args[0].equals("delete"))
            iApplicationPort.deleteStudentById(Long.parseLong(args[1]));
        } 
    }
}
然后,您可以启动应用程序,如:

java -jar yourApp.jar all

java -jar yourApp.jar delete 1

如果我的回答有帮助,请接受答案并投票表决。谢谢你,谢谢。我确信这不是正确的方向,但我得到的原因是:java.lang.ArrayIndexOutOfBoundsException:0位于org.package.ApplicationAdapter.runApplicationAdapter.java:19~[classes/:na]位于org.springframework.boot.SpringApplication.callRunnerSpringApplication.java:781[spring-boot-2.1.9.RELEASE.jar:2.1.9.RELEASE]。。。省略10个常用帧如何调用该程序?当我试图用IntelliJ启动程序时,它失败了