Biorąc pod uwagę aplikację Spring Boot CommandLineRunner
, chciałbym wiedzieć, jak filtrować opcje "przełączania" przekazane do Spring Boot jako konfigurację zewnętrzną.Spring Boot CommandLineRunner: argument opcji filtru
Na przykład z:
@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);
}
}
}
mogę zadzwonić java -jar myJar.jar /tmp/file1 /tmp/file2
a usługa zostanie wywołana dla obu plików.
Ale jeśli dodaję parametr Spring, np. java -jar myJar.jar /tmp/file1 /tmp/file2 --spring.config.name=myproject
, to nazwa konfiguracji jest aktualizowana (prawy!), Ale usługa jest również wywoływana dla pliku ./--spring.config.name=myproject
, który oczywiście nie istnieje.
wiem, że mogę filtrować ręcznie w pliku z czymś jak
if (!filename.startsWith("--")) ...
Ale jak to wszystko składników pochodzi z wiosną, zastanawiam się, czy nie jest to opcja gdzieś niech zarządzać nimi, a także upewnij się, że parametr strings
przekazany do metody run
nie będzie zawierał wszystkich opcji właściwości już przeanalizowanych na poziomie aplikacji.
Dzięki za przemyślane! –
Czy są jakieś informacje na ten temat? Co najmniej tysiąc osób w ciągu ostatnich 6 miesięcy wyświetliło to pytanie. –
Wygląda na to, że zostało to rozwiązane, czy mamy teraz przykład użycia 'ApplicationArguments' teraz? – Jackie