我有一个大型的Spring Boot整体Web应用程序项目。该应用程序打包为可执行JAR,并提供各种JSON REST端点。
现在,我有时想运行一段Java代码来处理或导入大文件,或者从命令行清理某些数据库表。
用Spring Boot做到这一点的好方法是什么?
我首先查看了CommandLineRunner
界面,但这似乎提供了完全不同的用例。始终在运行Spring Boot应用程序并随后启动主应用程序时执行此操作。
出于各种原因,我希望在与主Web应用程序相同的应用程序中具有此功能:
答案 0 :(得分:0)
如果要重复使用相同的jar,可以结合使用Profiles
和CommandLineRunners
。
@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
通过这种方式,仅在配置文件匹配时才执行命令行运行程序。