Chú thích @Document không cho phép chuyển trực tiếp tên chỉ mục trong tham số. Tuy nhiên tôi tìm thấy một công việc xung quanh.
Trong lớp cấu hình của tôi, tôi đã tạo Bean trả về một chuỗi. Trong chuỗi này, tôi tiêm tên của chỉ số với @value:
@Value("${etrali.indexname}")
private String indexName;
@Bean
public String indexName(){
return indexName;
}
Sau đó người ta có thể tiêm các chỉ số vào chú thích @Documentation như thế này:
@Document(indexName="#{@indexName}",type = "syslog_watcher")
Nó làm việc cho tôi, tôi hy vọng nó sẽ giúp bạn.
Trân trọng
Cũng cần một số giải pháp dựa trên môi trường/hồ sơ. Tên chỉ mục được chèn vào chú thích không phải là lựa chọn tốt nhất ... –
Tôi đã cố gắng làm điều tương tự bằng cách sử dụng một cái gì đó tương tự như khi bạn sử dụng @Value, nhưng không có may mắn được nêu ra. Xem [câu hỏi này] (http://stackoverflow.com/questions/31829456/inject-spel-parameter-on-annotation-parameter-like-what-is-done-with-value-on) để biết thêm thông tin. – Victor
Bạn không thể sử dụng @Value theo cách này bởi vì nó không phải là bean được quản lý/tạo bởi Spring nhưng bạn sử dụng MyBean mới(). Tôi vẫn không thể có ý tưởng đằng sau cài đặt chú thích này. Tất cả mọi người phải đối phó với điều này ví dụ khi sử dụng indexName diffent cho dev và prod. Làm thế nào để bạn làm điều này? –