1

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

@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();deleteStudentById((long) 1);从终端。我怎样才能做到这一点?

4

1 回答 1

2

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

@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
于 2019-10-26T13:43:49.227 回答