2017-09-20 5 views
0

Wie kann ich Platzhalter in @Profile verwenden?Verwenden Sie Platzhalter in @Profile

Zum Beispiel:

@Profile("*-from-db") 
private class Foo { 

Foo Bean aktiviert werden soll, wenn die spring.profiles.active mit "-from-db" beendet ist; wie dev-from-db, qa-from-db, prod-from-db usw.

+1

Sie können nicht ... Schreiben Sie Ihre eigene Regel, die das tut. –

Antwort

0

Wie von anderen gesagt, ist dies nicht möglich mit der @Profile Annotation und kann nur durch die Umsetzung Ihrer eigenen Condition getan werden.

, das zu tun, müssen Sie eine Anmerkung erstellen (zB. @ConditionalOnProfileSuffix) und eine Implementierung von Condition zu schaffen (der einfachste Weg ist, um von SpringBootCondition erstreckt).

Nachdem die Sie haben Ihre bedingte Anmerkung mit der @Conditional Anmerkung, zum Beispiel mit Anmerkungen versehen:

@Conditional(OnProfileSuffixCondition.class) 

Innerhalb OnProfileSuffixCondition (die Umsetzung der SpringBootCondition), können Sie die aktiven Profile abrufen, indem Sie mit:

conditionContext.getEnvironment().getActiveProfiles() 

Um die Werte aus der Anmerkung abrufen Sie verwenden können:

annotatedTypeMetadata.getAllAnnotationAttributes(ConditionalOnProfileSuffix.class.getName()); 

Dadurch wird MultiValuedMap zurückgegeben, wobei der Schlüssel der Name der Annotationseigenschaft ist und der Wert ein beliebiges Objekt ist (abhängig vom Typ).

Verwandte Themen