Spring Boot运行命令行并终止

时间:2018-10-25 14:47:01

标签: java spring spring-boot

我有一个大型的Spring Boot整体Web应用程序项目。该应用程序打包为可执行JAR,并提供各种JSON REST端点。

现在,我有时想运行一段Java代码来处理或导入大文件,或者从命令行清理某些数据库表。

用Spring Boot做到这一点的好方法是什么?

我首先查看了CommandLineRunner界面,但这似乎提供了完全不同的用例。始终在运行Spring Boot应用程序并随后启动主应用程序时执行此操作。

出于各种原因,我希望在与主Web应用程序相同的应用程序中具有此功能:

  • 重复使用相同的应用程序配置(数据库凭据,外部配置文件等)
  • 重用应用程序上下文
  • 共享的应用程序逻辑和代码
  • 难以拆分成较小的(微型)服务

1 个答案:

答案 0 :(得分:0)

如果要重复使用相同的jar,可以结合使用ProfilesCommandLineRunners

@Configuration
public class BatchConfig {

    @Bean
    @Profile("import")
    public CommandLineRunner import() {
        // ...
    } 

    @Bean
    @Profile("dbClean")
    public CommandLineRunner dbClean() {
        // ...
    } 

}

然后,当您运行jar时,将所需的配置文件作为参数传递。

java -jar -Dspring.profiles.active=dbClean yourJar.jar

通过这种方式,仅在配置文件匹配时才执行命令行运行程序。