2016-03-25 11 views
1

Ich versuche, Controller abhängig vom Wert in der Eigenschaftendatei zu aktivieren/deaktivieren. mein Controller sieht wie folgt aus:@ConditionalOnExpression @RestController aktivieren/deaktivieren

properties.enabled= false 

Und Controller ist immer aktiviert (I Methode getSomething zugreifen können):

@RestController 
@ConditionalOnExpression("${properties.enabled}") 
public class Controller{ 
    public String getSomething() { 
    return "Something"; 
    } 
} 

Meine Eigenschaften Datei sieht wie folgt aus. Ich habe auch versucht Kombinationen wie folgt aus:

@ConditionalOnExpression("${properties.enabled:true}") 
@ConditionalOnExpression("${properties.enabled}==true") 
@ConditionalOnExpression("${properties.enabled}=='true'") 
@ConditionalOnExpression("'${properties.enabled}'=='true'") 

Edit: auch versucht, verschiedene Anmerkung:

@ConditionalOnProperty(prefix = "properties", name="enabled") 
+0

Verwenden '@ ConditionalOnProperty' anstelle oder einen Ausdruck verwenden Das sollte mit '# {...}' nicht '$ {...}' beginnen. –

Antwort

0

fand ich endlich das Problem. Diese Bean wurde nicht von Frühling aber in WebConfiguration Klasse erstellt, damit ich auch dort Anmerkung hatte hinzufügen

public class CommonWebConfiguration extends WebMvcConfigurationSupport { 
@Bean 
@ConditionalOnProperty(prefix="properties",name = "enabled") 
public Controller controller() { 
    return new Controller(); 
} 
} 

mein Controller sieht nun wie folgt aus:

@RestController 
@ConditionalOnProperty(prefix="properties",name = "enabled") 
public class Controller{ 
    public String getSomething() { 
    return "Something"; 
    } 
} 
+0

Müssen Sie diese ConditionalOnProperty in einer Controller-Klasse behalten? – okutane

+0

Ich nicht. Ich habe nur vergessen, es zu entfernen. – pokemzok

+0

Danke. Ich versuche das Gleiche zu tun, aber mein Controller wird im Frühjahr erstellt und nachdem ich die Anmerkung hinzugefügt habe, ist der Controller jetzt immer deaktiviert. -_- – okutane

Verwandte Themen