Xem xét một khởi động mùa xuân CommandLineRunner
Ứng dụng, tôi muốn biết làm thế nào để lọc các tùy chọn "chuyển đổi" được chuyển đến Spring Boot như cấu hình bên ngoài.Khởi động mùa xuân CommandLineRunner: lọc đối số tùy chọn
Ví dụ, với:
@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);
}
}
}
tôi có thể gọi java -jar myJar.jar /tmp/file1 /tmp/file2
và dịch vụ sẽ được gọi cho cả tập tin.
Nhưng nếu tôi thêm thông số Spring, như java -jar myJar.jar /tmp/file1 /tmp/file2 --spring.config.name=myproject
thì tên cấu hình được cập nhật (phải!) Nhưng dịch vụ cũng được gọi cho tệp ./--spring.config.name=myproject
, tất nhiên là không tồn tại.
Tôi biết tôi có thể lọc bằng tay trên tên tập tin với một cái gì đó giống như
if (!filename.startsWith("--")) ...
Nhưng như tất cả các thành phần này đến từ mùa xuân, tôi tự hỏi, nếu không có một tùy chọn ở đâu đó để cho nó quản lý nó, và để đảm bảo thông số strings
được chuyển đến phương thức run
sẽ không chứa tất cả các tùy chọn thuộc tính đã được phân tích cú pháp ở cấp Ứng dụng.
Cảm ơn bạn đã xem xét! –
Có bất kỳ tin tức nào liên quan đến điều đó không? Ít nhất một nghìn người trong 6 tháng qua đã xem câu hỏi này. –
Có vẻ như điều này đã được giải quyết, chúng ta có ví dụ về cách sử dụng 'ApplicationArguments' ngay bây giờ không? – Jackie