【发布时间】:2015-01-19 12:21:21
【问题描述】:
考虑到 Spring Boot CommandLineRunner 应用程序,我想知道如何过滤作为外部配置传递给 Spring Boot 的“开关”选项。
例如,用:
@Component
public class FileProcessingCommandLine implements CommandLineRunner {
@Override
public void run(String... strings) throws Exception {
for (String filename: strings) {
File file = new File(filename);
service.doSomething(file);
}
}
}
我可以打电话给java -jar myJar.jar /tmp/file1 /tmp/file2,这两个文件都会调用该服务。
但是,如果我添加一个 Spring 参数,例如 java -jar myJar.jar /tmp/file1 /tmp/file2 --spring.config.name=myproject,那么配置名称会更新(对!),但也会为文件 ./--spring.config.name=myproject 调用该服务,这当然不存在。
我知道我可以使用类似的文件名手动过滤
if (!filename.startsWith("--")) ...
但是由于所有这些组件都来自 Spring,我想知道是否没有一个选项可以让它管理它,并确保传递给 run 方法的 strings 参数不会包含所有属性选项已在应用程序级别解析。
【问题讨论】:
标签: java spring command-line spring-batch spring-boot