Die @Document-Annotation erlaubt nicht, den Indexnamen im Parameter direkt zu übergeben. Allerdings habe ich eine Arbeit gefunden.
In meiner Konfigurationsklasse habe ich eine Bean erstellt, die eine Zeichenfolge zurückgibt. In dieser Zeichenfolge injiziert ich den Namen des Index mit @Value:
@Value("${etrali.indexname}")
private String indexName;
@Bean
public String indexName(){
return indexName;
}
Danach ist es möglich, den Index in die @Documentation Anmerkung so zu injizieren:
@Document(indexName="#{@indexName}",type = "syslog_watcher")
Es funktioniert für mich, ich hoffe es wird dir helfen.
Mit freundlichen Grüßen
Benötigen Sie auch einige Umgebung/profilbasierte Lösung. Der in der Annotation festverdrahtete Indexname ist nicht die beste Option ... –
Ich habe versucht, dasselbe mit etwas zu tun, das ähnlich ist, wenn Sie @ Value verwenden, aber noch kein Glück. Siehe [diese Frage] (http://stackoverflow.com/questions/31829456/inject-spel-parameter-on-annotation-parameter-like-what-is-done-with-value-on) für weitere Informationen. – Victor
Sie können @Value nicht auf diese Weise verwenden, da es sich hierbei nicht um eine Bean handelt, die von Spring verwaltet oder erstellt wird, sondern von Ihnen, wenn Sie MyBean() verwenden. Ich kann immer noch keine Idee hinter diesen Annotationseinstellungen haben. Jeder muss sich damit befassen, wenn er zum Beispiel diffent indexName für dev und prod verwendet. Wie machst Du das? –