运行 Spring Boot 应用程序一次并退出

Mar*_*arx 3 spring spring-boot

我有运行正常的 Spring Boot 应用程序。现在我想添加点播功能以从光盘上的文件导入一些数据(它将被使用一次,永远不会再使用)。我已经准备好使用数据库连接、DTO 对象等,还有导入数据的方法。我想启动我的应用程序,例如使用命令行开关(例如 -file path/to/file)。它应该启动一个应用程序,执行我的导入方法,然后关闭。最好不要启动嵌入式Tomcat。

我正在考虑使用 @SpringBootApplication 注释的单独主类,并考虑使用 -classpath 运行,但我不知道这是个好主意。

现在我认为最好做一个小的分离项目,但也许有一个很好的功能,它允许我运行我的应用程序一次并执行导入方法。

Nir*_*evy 5

您可以使用 Spring 的CommandLineRunner接口:

例如(取自本指南):

@SpringBootApplication
public class SpringBootConsoleApplication 
  implements CommandLineRunner {

    private static Logger LOG = LoggerFactory
      .getLogger(SpringBootConsoleApplication.class);

    public static void main(String[] args) {
        LOG.info("STARTING THE APPLICATION");
        SpringApplication.run(SpringBootConsoleApplication.class, args);
        LOG.info("APPLICATION FINISHED");
    }

    @Override
    public void run(String... args) {
        LOG.info("EXECUTING : command line runner");

        for (int i = 0; i < args.length; ++i) {
            LOG.info("args[{}]: {}", i, args[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)